
// Copyright (C) 2009-2011 Luca Piccioni
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;

#pragma warning disable 1572, 1573

namespace Derm.OpenGL {

	/// <summary>
	/// Implementation of the OpenGL specification 
	/// </summary>
	public unsafe partial class Gl : ProcLoader
	{

		/// <summary>
		/// Binding for glActiveTextureARB function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ActiveTextureARB(int texture) {
			if      (Delegates.pglActiveTextureARB != null)
				Delegates.pglActiveTextureARB(texture);
			else
				throw new InvalidOperationException("binding point ActiveTextureARB cannot be found");
			LogProc("glActiveTextureARB({0})", texture);
		}

		/// <summary>
		/// Binding for glAttachObjectARB function.
		/// </summary>
		/// <param name="containerObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void AttachObjectARB(UInt32 containerObj, UInt32 obj) {
			if      (Delegates.pglAttachObjectARB != null)
				Delegates.pglAttachObjectARB(containerObj, obj);
			else
				throw new InvalidOperationException("binding point AttachObjectARB cannot be found");
			LogProc("glAttachObjectARB({0}, {1})", containerObj, obj);
		}

		/// <summary>
		/// Binding for glBeginQueryARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void BeginQueryARB(int target, UInt32 id) {
			if      (Delegates.pglBeginQueryARB != null)
				Delegates.pglBeginQueryARB(target, id);
			else
				throw new InvalidOperationException("binding point BeginQueryARB cannot be found");
			LogProc("glBeginQueryARB({0}, {1})", target, id);
		}

		/// <summary>
		/// Binding for glBindAttribLocationARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindAttribLocationARB(UInt32 programObj, UInt32 index, string name) {
			if      (Delegates.pglBindAttribLocationARB != null)
				Delegates.pglBindAttribLocationARB(programObj, index, name);
			else
				throw new InvalidOperationException("binding point BindAttribLocationARB cannot be found");
			LogProc("glBindAttribLocationARB({0}, {1}, {2})", programObj, index, name);
		}

		/// <summary>
		/// Binding for glBindBufferARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BindBufferARB(int target, UInt32 buffer) {
			if      (Delegates.pglBindBufferARB != null)
				Delegates.pglBindBufferARB(target, buffer);
			else
				throw new InvalidOperationException("binding point BindBufferARB cannot be found");
			LogProc("glBindBufferARB({0}, {1})", target, buffer);
		}

		/// <summary>
		/// Binding for glBindProgramARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void BindProgramARB(int target, UInt32 program) {
			if      (Delegates.pglBindProgramARB != null)
				Delegates.pglBindProgramARB(target, program);
			else
				throw new InvalidOperationException("binding point BindProgramARB cannot be found");
			LogProc("glBindProgramARB({0}, {1})", target, program);
		}

		/// <summary>
		/// Binding for glBlendEquationiARB function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendEquationARB(UInt32 buf, int mode) {
			if      (Delegates.pglBlendEquationiARB != null)
				Delegates.pglBlendEquationiARB(buf, mode);
			else
				throw new InvalidOperationException("binding point BlendEquationARB cannot be found");
			LogProc("glBlendEquationiARB({0}, {1})", buf, mode);
		}

		/// <summary>
		/// Binding for glBlendEquationSeparateiARB function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="modeRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="modeAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendEquationSeparateARB(UInt32 buf, int modeRGB, int modeAlpha) {
			if      (Delegates.pglBlendEquationSeparateiARB != null)
				Delegates.pglBlendEquationSeparateiARB(buf, modeRGB, modeAlpha);
			else
				throw new InvalidOperationException("binding point BlendEquationSeparateARB cannot be found");
			LogProc("glBlendEquationSeparateiARB({0}, {1}, {2})", buf, modeRGB, modeAlpha);
		}

		/// <summary>
		/// Binding for glBlendFunciARB function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="src">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dst">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendFuncARB(UInt32 buf, int src, int dst) {
			if      (Delegates.pglBlendFunciARB != null)
				Delegates.pglBlendFunciARB(buf, src, dst);
			else
				throw new InvalidOperationException("binding point BlendFuncARB cannot be found");
			LogProc("glBlendFunciARB({0}, {1}, {2})", buf, src, dst);
		}

		/// <summary>
		/// Binding for glBlendFuncSeparateiARB function.
		/// </summary>
		/// <param name="buf">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="srcRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstRGB">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="srcAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="dstAlpha">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BlendFuncSeparateARB(UInt32 buf, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha) {
			if      (Delegates.pglBlendFuncSeparateiARB != null)
				Delegates.pglBlendFuncSeparateiARB(buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
			else
				throw new InvalidOperationException("binding point BlendFuncSeparateARB cannot be found");
			LogProc("glBlendFuncSeparateiARB({0}, {1}, {2}, {3}, {4})", buf, srcRGB, dstRGB, srcAlpha, dstAlpha);
		}

		/// <summary>
		/// Binding for glBufferDataARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="usage">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BufferDataARB(int target, IntPtr size, object data, int usage) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglBufferDataARB != null)
					Delegates.pglBufferDataARB(target, size, pp_data.AddrOfPinnedObject(), usage);
				else
					throw new InvalidOperationException("binding point BufferDataARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glBufferDataARB({0}, {1}, {2}, {3})", target, size, data, usage);
		}

		/// <summary>
		/// Binding for glBufferDataARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Void"/>.
		/// </param>
		/// <param name="usage">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BufferDataARB(int target, IntPtr size, IntPtr data, int usage) {
			unsafe {
				if      (Delegates.pglBufferDataARB != null)
					Delegates.pglBufferDataARB(target, size, new IntPtr((long)data), usage);
				else
					throw new InvalidOperationException("binding point BufferDataARB cannot be found");
			}
			LogProc("glBufferDataARB({0}, {1}, {2}, {3})", target, size, "data", usage);
		}
		

		/// <summary>
		/// Binding for glBufferSubDataARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BufferSubDataARB(int target, IntPtr offset, IntPtr size, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglBufferSubDataARB != null)
					Delegates.pglBufferSubDataARB(target, offset, size, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point BufferSubDataARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glBufferSubDataARB({0}, {1}, {2}, {3})", target, offset, size, data);
		}

		/// <summary>
		/// Binding for glBufferSubDataARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.Void"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void BufferSubDataARB(int target, IntPtr offset, IntPtr size, IntPtr data) {
			unsafe {
				if      (Delegates.pglBufferSubDataARB != null)
					Delegates.pglBufferSubDataARB(target, offset, size, new IntPtr((long)data));
				else
					throw new InvalidOperationException("binding point BufferSubDataARB cannot be found");
			}
			LogProc("glBufferSubDataARB({0}, {1}, {2}, {3})", target, offset, size, "data");
		}
		

		/// <summary>
		/// Binding for glClampColorARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="clamp">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void ClampColorARB(int target, int clamp) {
			if      (Delegates.pglClampColorARB != null)
				Delegates.pglClampColorARB(target, clamp);
			else
				throw new InvalidOperationException("binding point ClampColorARB cannot be found");
			LogProc("glClampColorARB({0}, {1})", target, clamp);
		}

		/// <summary>
		/// Binding for glClientActiveTextureARB function.
		/// </summary>
		/// <param name="texture">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ClientActiveTextureARB(int texture) {
			if      (Delegates.pglClientActiveTextureARB != null)
				Delegates.pglClientActiveTextureARB(texture);
			else
				throw new InvalidOperationException("binding point ClientActiveTextureARB cannot be found");
			LogProc("glClientActiveTextureARB({0})", texture);
		}

		/// <summary>
		/// Binding for glCompileShaderARB function.
		/// </summary>
		/// <param name="shaderObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompileShaderARB(UInt32 shaderObj) {
			if      (Delegates.pglCompileShaderARB != null)
				Delegates.pglCompileShaderARB(shaderObj);
			else
				throw new InvalidOperationException("binding point CompileShaderARB cannot be found");
			LogProc("glCompileShaderARB({0})", shaderObj);
		}

		/// <summary>
		/// Binding for glCompileShaderIncludeARB function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="path">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompileShaderIncludeARB(UInt32 shader, Int32 count, string[] path, int[] length) {
			unsafe {
				fixed (int* fp_length = length)
				{
					if      (Delegates.pglCompileShaderIncludeARB != null)
						Delegates.pglCompileShaderIncludeARB(shader, count, path, fp_length);
					else
						throw new InvalidOperationException("binding point CompileShaderIncludeARB cannot be found");
				}
			}
			LogProc("glCompileShaderIncludeARB({0}, {1}, {2}, {3})", shader, count, path, length);
		}

		/// <summary>
		/// Binding for glCompileShaderIncludeARB function.
		/// </summary>
		/// <param name="shader">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="path">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompileShaderIncludeARB(UInt32 shader, Int32 count, string[] path, int* length) {
			unsafe {
				if      (Delegates.pglCompileShaderIncludeARB != null)
					Delegates.pglCompileShaderIncludeARB(shader, count, path, length);
				else
					throw new InvalidOperationException("binding point CompileShaderIncludeARB cannot be found");
			}
			LogProc("glCompileShaderIncludeARB({0}, {1}, {2}, {3})", shader, count, path, "length");
		}
		

		/// <summary>
		/// Binding for glCompressedTexImage1DARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompressedTexImage1DARB(int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexImage1DARB != null)
					Delegates.pglCompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexImage1DARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexImage1DARB({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, internalformat, width, border, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexImage2DARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompressedTexImage2DARB(int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexImage2DARB != null)
					Delegates.pglCompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexImage2DARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexImage2DARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, level, internalformat, width, height, border, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexImage3DARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="border">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompressedTexImage3DARB(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexImage3DARB != null)
					Delegates.pglCompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexImage3DARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexImage3DARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, internalformat, width, height, depth, border, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexSubImage1DARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompressedTexSubImage1DARB(int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexSubImage1DARB != null)
					Delegates.pglCompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexSubImage1DARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexSubImage1DARB({0}, {1}, {2}, {3}, {4}, {5}, {6})", target, level, xoffset, width, format, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexSubImage2DARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompressedTexSubImage2DARB(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexSubImage2DARB != null)
					Delegates.pglCompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexSubImage2DARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexSubImage2DARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})", target, level, xoffset, yoffset, width, height, format, imageSize, data);
		}

		/// <summary>
		/// Binding for glCompressedTexSubImage3DARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="xoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="yoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="zoffset">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="depth">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="imageSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void CompressedTexSubImage3DARB(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglCompressedTexSubImage3DARB != null)
					Delegates.pglCompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point CompressedTexSubImage3DARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glCompressedTexSubImage3DARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8}, {9}, {10})", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
		}

		/// <summary>
		/// Binding for glCreateProgramObjectARB function.
		/// </summary>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 CreateProgramObjectARB() {
			UInt32 retvalue;
			if      (Delegates.pglCreateProgramObjectARB != null)
				retvalue = (Delegates.pglCreateProgramObjectARB());
			else
				throw new InvalidOperationException("binding point CreateProgramObjectARB cannot be found");
			LogProc("glCreateProgramObjectARB()");
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCreateShaderObjectARB function.
		/// </summary>
		/// <param name="shaderType">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 CreateShaderObjectARB(int shaderType) {
			UInt32 retvalue;
			if      (Delegates.pglCreateShaderObjectARB != null)
				retvalue = (Delegates.pglCreateShaderObjectARB(shaderType));
			else
				throw new InvalidOperationException("binding point CreateShaderObjectARB cannot be found");
			LogProc("glCreateShaderObjectARB({0}) = {1}", shaderType, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCreateSyncFromCLeventARB function.
		/// </summary>
		/// <param name="context">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="event">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="flags">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static int CreateSyncFromCLeventARB(IntPtr context, IntPtr @event, uint flags) {
			int retvalue;
			if      (Delegates.pglCreateSyncFromCLeventARB != null)
				retvalue = (Delegates.pglCreateSyncFromCLeventARB(context, @event, flags));
			else
				throw new InvalidOperationException("binding point CreateSyncFromCLeventARB cannot be found");
			LogProc("glCreateSyncFromCLeventARB({0}, {1}, {2}) = {3}", context, @event, flags, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glCurrentPaletteMatrixARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void CurrentPaletteMatrixARB(int index) {
			if      (Delegates.pglCurrentPaletteMatrixARB != null)
				Delegates.pglCurrentPaletteMatrixARB(index);
			else
				throw new InvalidOperationException("binding point CurrentPaletteMatrixARB cannot be found");
			LogProc("glCurrentPaletteMatrixARB({0})", index);
		}

		/// <summary>
		/// Binding for glDebugMessageCallbackARB function.
		/// </summary>
		/// <param name="callback">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="userParam">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DebugMessageCallbackARB(IntPtr callback, object userParam) {
			GCHandle pp_userParam = GCHandle.Alloc(userParam, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDebugMessageCallbackARB != null)
					Delegates.pglDebugMessageCallbackARB(callback, pp_userParam.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point DebugMessageCallbackARB cannot be found");
			} finally {
				pp_userParam.Free();
			}
			LogProc("glDebugMessageCallbackARB({0}, {1})", callback, userParam);
		}

		/// <summary>
		/// Binding for glDebugMessageControlARB function.
		/// </summary>
		/// <param name="source">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="severity">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// <param name="enabled">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DebugMessageControlARB(int source, int type, int severity, Int32 count, UInt32[] ids, bool enabled) {
			unsafe {
				fixed (UInt32* fp_ids = ids)
				{
					if      (Delegates.pglDebugMessageControlARB != null)
						Delegates.pglDebugMessageControlARB(source, type, severity, count, fp_ids, enabled);
					else
						throw new InvalidOperationException("binding point DebugMessageControlARB cannot be found");
				}
			}
			LogProc("glDebugMessageControlARB({0}, {1}, {2}, {3}, {4}, {5})", source, type, severity, count, ids, enabled);
		}

		/// <summary>
		/// Binding for glDebugMessageControlARB function.
		/// </summary>
		/// <param name="source">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="severity">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="enabled">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DebugMessageControlARB(int source, int type, int severity, Int32 count, UInt32* ids, bool enabled) {
			unsafe {
				if      (Delegates.pglDebugMessageControlARB != null)
					Delegates.pglDebugMessageControlARB(source, type, severity, count, ids, enabled);
				else
					throw new InvalidOperationException("binding point DebugMessageControlARB cannot be found");
			}
			LogProc("glDebugMessageControlARB({0}, {1}, {2}, {3}, {4}, {5})", source, type, severity, count, "ids", enabled);
		}
		

		/// <summary>
		/// Binding for glDebugMessageInsertARB function.
		/// </summary>
		/// <param name="source">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="severity">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buf">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void DebugMessageInsertARB(int source, int type, UInt32 id, int severity, Int32 length, string buf) {
			if      (Delegates.pglDebugMessageInsertARB != null)
				Delegates.pglDebugMessageInsertARB(source, type, id, severity, length, buf);
			else
				throw new InvalidOperationException("binding point DebugMessageInsertARB cannot be found");
			LogProc("glDebugMessageInsertARB({0}, {1}, {2}, {3}, {4}, {5})", source, type, id, severity, length, buf);
		}

		/// <summary>
		/// Binding for glDeleteBuffersARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteBuffersARB(Int32 n, UInt32[] buffers) {
			unsafe {
				fixed (UInt32* fp_buffers = buffers)
				{
					if      (Delegates.pglDeleteBuffersARB != null)
						Delegates.pglDeleteBuffersARB(n, fp_buffers);
					else
						throw new InvalidOperationException("binding point DeleteBuffersARB cannot be found");
				}
			}
			LogProc("glDeleteBuffersARB({0}, {1})", n, buffers);
		}

		/// <summary>
		/// Binding for glDeleteNamedStringARB function.
		/// </summary>
		/// <param name="namelen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteNamedStringARB(int namelen, string name) {
			if      (Delegates.pglDeleteNamedStringARB != null)
				Delegates.pglDeleteNamedStringARB(namelen, name);
			else
				throw new InvalidOperationException("binding point DeleteNamedStringARB cannot be found");
			LogProc("glDeleteNamedStringARB({0}, {1})", namelen, name);
		}

		/// <summary>
		/// Binding for glDeleteObjectARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DeleteObjectARB(UInt32 obj) {
			if      (Delegates.pglDeleteObjectARB != null)
				Delegates.pglDeleteObjectARB(obj);
			else
				throw new InvalidOperationException("binding point DeleteObjectARB cannot be found");
			LogProc("glDeleteObjectARB({0})", obj);
		}

		/// <summary>
		/// Binding for glDeleteProgramsARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="programs">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void DeleteProgramsARB(Int32 n, UInt32[] programs) {
			unsafe {
				fixed (UInt32* fp_programs = programs)
				{
					if      (Delegates.pglDeleteProgramsARB != null)
						Delegates.pglDeleteProgramsARB(n, fp_programs);
					else
						throw new InvalidOperationException("binding point DeleteProgramsARB cannot be found");
				}
			}
			LogProc("glDeleteProgramsARB({0}, {1})", n, programs);
		}

		/// <summary>
		/// Binding for glDeleteProgramsARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="programs">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void DeleteProgramsARB(Int32 n, UInt32* programs) {
			unsafe {
				if      (Delegates.pglDeleteProgramsARB != null)
					Delegates.pglDeleteProgramsARB(n, programs);
				else
					throw new InvalidOperationException("binding point DeleteProgramsARB cannot be found");
			}
			LogProc("glDeleteProgramsARB({0}, {1})", n, "programs");
		}
		

		/// <summary>
		/// Binding for glDeleteQueriesARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void DeleteQueriesARB(Int32 n, UInt32[] ids) {
			unsafe {
				fixed (UInt32* fp_ids = ids)
				{
					if      (Delegates.pglDeleteQueriesARB != null)
						Delegates.pglDeleteQueriesARB(n, fp_ids);
					else
						throw new InvalidOperationException("binding point DeleteQueriesARB cannot be found");
				}
			}
			LogProc("glDeleteQueriesARB({0}, {1})", n, ids);
		}

		/// <summary>
		/// Binding for glDeleteQueriesARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void DeleteQueriesARB(Int32 n, UInt32* ids) {
			unsafe {
				if      (Delegates.pglDeleteQueriesARB != null)
					Delegates.pglDeleteQueriesARB(n, ids);
				else
					throw new InvalidOperationException("binding point DeleteQueriesARB cannot be found");
			}
			LogProc("glDeleteQueriesARB({0}, {1})", n, "ids");
		}
		

		/// <summary>
		/// Binding for glDetachObjectARB function.
		/// </summary>
		/// <param name="containerObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="attachedObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void DetachObjectARB(UInt32 containerObj, UInt32 attachedObj) {
			if      (Delegates.pglDetachObjectARB != null)
				Delegates.pglDetachObjectARB(containerObj, attachedObj);
			else
				throw new InvalidOperationException("binding point DetachObjectARB cannot be found");
			LogProc("glDetachObjectARB({0}, {1})", containerObj, attachedObj);
		}

		/// <summary>
		/// Binding for glDisableVertexAttribArrayARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void DisableVertexAttribArrayARB(UInt32 index) {
			if      (Delegates.pglDisableVertexAttribArrayARB != null)
				Delegates.pglDisableVertexAttribArrayARB(index);
			else
				throw new InvalidOperationException("binding point DisableVertexAttribArrayARB cannot be found");
			LogProc("glDisableVertexAttribArrayARB({0})", index);
		}

		/// <summary>
		/// Binding for glDrawArraysInstancedARB function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="first">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DrawArraysInstancedARB(int mode, int first, Int32 count, Int32 primcount) {
			if      (Delegates.pglDrawArraysInstancedARB != null)
				Delegates.pglDrawArraysInstancedARB(mode, first, count, primcount);
			else
				throw new InvalidOperationException("binding point DrawArraysInstancedARB cannot be found");
			LogProc("glDrawArraysInstancedARB({0}, {1}, {2}, {3})", mode, first, count, primcount);
		}

		/// <summary>
		/// Binding for glDrawBuffersARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufs">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void DrawBuffersARB(Int32 n, int[] bufs) {
			unsafe {
				fixed (int* fp_bufs = bufs)
				{
					if      (Delegates.pglDrawBuffersARB != null)
						Delegates.pglDrawBuffersARB(n, fp_bufs);
					else
						throw new InvalidOperationException("binding point DrawBuffersARB cannot be found");
				}
			}
			LogProc("glDrawBuffersARB({0}, {1})", n, bufs);
		}

		/// <summary>
		/// Binding for glDrawElementsInstancedARB function.
		/// </summary>
		/// <param name="mode">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="primcount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void DrawElementsInstancedARB(int mode, Int32 count, int type, object indices, Int32 primcount) {
			GCHandle pp_indices = GCHandle.Alloc(indices, GCHandleType.Pinned);
			try {
				if      (Delegates.pglDrawElementsInstancedARB != null)
					Delegates.pglDrawElementsInstancedARB(mode, count, type, pp_indices.AddrOfPinnedObject(), primcount);
				else
					throw new InvalidOperationException("binding point DrawElementsInstancedARB cannot be found");
			} finally {
				pp_indices.Free();
			}
			LogProc("glDrawElementsInstancedARB({0}, {1}, {2}, {3}, {4})", mode, count, type, indices, primcount);
		}

		/// <summary>
		/// Binding for glEnableVertexAttribArrayARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void EnableVertexAttribArrayARB(UInt32 index) {
			if      (Delegates.pglEnableVertexAttribArrayARB != null)
				Delegates.pglEnableVertexAttribArrayARB(index);
			else
				throw new InvalidOperationException("binding point EnableVertexAttribArrayARB cannot be found");
			LogProc("glEnableVertexAttribArrayARB({0})", index);
		}

		/// <summary>
		/// Binding for glEndQueryARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void EndQueryARB(int target) {
			if      (Delegates.pglEndQueryARB != null)
				Delegates.pglEndQueryARB(target);
			else
				throw new InvalidOperationException("binding point EndQueryARB cannot be found");
			LogProc("glEndQueryARB({0})", target);
		}

		/// <summary>
		/// Binding for glFramebufferTextureARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferTextureARB(int target, int attachment, UInt32 texture, int level) {
			if      (Delegates.pglFramebufferTextureARB != null)
				Delegates.pglFramebufferTextureARB(target, attachment, texture, level);
			else
				throw new InvalidOperationException("binding point FramebufferTextureARB cannot be found");
			LogProc("glFramebufferTextureARB({0}, {1}, {2}, {3})", target, attachment, texture, level);
		}

		/// <summary>
		/// Binding for glFramebufferTextureFaceARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="face">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferTextureFaceARB(int target, int attachment, UInt32 texture, int level, int face) {
			if      (Delegates.pglFramebufferTextureFaceARB != null)
				Delegates.pglFramebufferTextureFaceARB(target, attachment, texture, level, face);
			else
				throw new InvalidOperationException("binding point FramebufferTextureFaceARB cannot be found");
			LogProc("glFramebufferTextureFaceARB({0}, {1}, {2}, {3}, {4})", target, attachment, texture, level, face);
		}

		/// <summary>
		/// Binding for glFramebufferTextureLayerARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="attachment">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="texture">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="layer">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void FramebufferTextureLayerARB(int target, int attachment, UInt32 texture, int level, int layer) {
			if      (Delegates.pglFramebufferTextureLayerARB != null)
				Delegates.pglFramebufferTextureLayerARB(target, attachment, texture, level, layer);
			else
				throw new InvalidOperationException("binding point FramebufferTextureLayerARB cannot be found");
			LogProc("glFramebufferTextureLayerARB({0}, {1}, {2}, {3}, {4})", target, attachment, texture, level, layer);
		}

		/// <summary>
		/// Binding for glGenBuffersARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenBuffersARB(Int32 n, [Out] UInt32[] buffers) {
			unsafe {
				fixed (UInt32* fp_buffers = buffers)
				{
					if      (Delegates.pglGenBuffersARB != null)
						Delegates.pglGenBuffersARB(n, fp_buffers);
					else
						throw new InvalidOperationException("binding point GenBuffersARB cannot be found");
				}
			}
			LogProc("glGenBuffersARB({0}, {1})", n, buffers);
		}

		/// <summary>
		/// Binding for glGenBuffersARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenBuffersARB(Int32 n, out UInt32 buffers) {
			unsafe {
				fixed (UInt32* fp_buffers = &buffers)
				{
					if      (Delegates.pglGenBuffersARB != null)
						Delegates.pglGenBuffersARB(n, fp_buffers);
					else
						throw new InvalidOperationException("binding point GenBuffersARB cannot be found");
				}
			}
			LogProc("glGenBuffersARB({0}, {1})", n, buffers);
		}
		
		/// <summary>
		/// Binding for glGenBuffersARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffers">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GenBuffersARB(Int32 n, UInt32* buffers) {
			unsafe {
				if      (Delegates.pglGenBuffersARB != null)
					Delegates.pglGenBuffersARB(n, buffers);
				else
					throw new InvalidOperationException("binding point GenBuffersARB cannot be found");
			}
			LogProc("glGenBuffersARB({0}, {1})", n, "buffers");
		}
		

		/// <summary>
		/// Binding for glGenProgramsARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="programs">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GenProgramsARB(Int32 n, [Out] UInt32[] programs) {
			unsafe {
				fixed (UInt32* fp_programs = programs)
				{
					if      (Delegates.pglGenProgramsARB != null)
						Delegates.pglGenProgramsARB(n, fp_programs);
					else
						throw new InvalidOperationException("binding point GenProgramsARB cannot be found");
				}
			}
			LogProc("glGenProgramsARB({0}, {1})", n, programs);
		}

		/// <summary>
		/// Binding for glGenProgramsARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="programs">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GenProgramsARB(Int32 n, out UInt32 programs) {
			unsafe {
				fixed (UInt32* fp_programs = &programs)
				{
					if      (Delegates.pglGenProgramsARB != null)
						Delegates.pglGenProgramsARB(n, fp_programs);
					else
						throw new InvalidOperationException("binding point GenProgramsARB cannot be found");
				}
			}
			LogProc("glGenProgramsARB({0}, {1})", n, programs);
		}
		
		/// <summary>
		/// Binding for glGenProgramsARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="programs">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GenProgramsARB(Int32 n, UInt32* programs) {
			unsafe {
				if      (Delegates.pglGenProgramsARB != null)
					Delegates.pglGenProgramsARB(n, programs);
				else
					throw new InvalidOperationException("binding point GenProgramsARB cannot be found");
			}
			LogProc("glGenProgramsARB({0}, {1})", n, "programs");
		}
		

		/// <summary>
		/// Binding for glGenQueriesARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenQueriesARB(Int32 n, [Out] UInt32[] ids) {
			unsafe {
				fixed (UInt32* fp_ids = ids)
				{
					if      (Delegates.pglGenQueriesARB != null)
						Delegates.pglGenQueriesARB(n, fp_ids);
					else
						throw new InvalidOperationException("binding point GenQueriesARB cannot be found");
				}
			}
			LogProc("glGenQueriesARB({0}, {1})", n, ids);
		}

		/// <summary>
		/// Binding for glGenQueriesARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenQueriesARB(Int32 n, out UInt32 ids) {
			unsafe {
				fixed (UInt32* fp_ids = &ids)
				{
					if      (Delegates.pglGenQueriesARB != null)
						Delegates.pglGenQueriesARB(n, fp_ids);
					else
						throw new InvalidOperationException("binding point GenQueriesARB cannot be found");
				}
			}
			LogProc("glGenQueriesARB({0}, {1})", n, ids);
		}
		
		/// <summary>
		/// Binding for glGenQueriesARB function.
		/// </summary>
		/// <param name="n">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GenQueriesARB(Int32 n, UInt32* ids) {
			unsafe {
				if      (Delegates.pglGenQueriesARB != null)
					Delegates.pglGenQueriesARB(n, ids);
				else
					throw new InvalidOperationException("binding point GenQueriesARB cannot be found");
			}
			LogProc("glGenQueriesARB({0}, {1})", n, "ids");
		}
		

		/// <summary>
		/// Binding for glGetActiveAttribARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxLength">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetActiveAttribARB(UInt32 programObj, UInt32 index, Int32 maxLength, [Out] out Int32 length, [Out] out int size, [Out] out int type, [Out] StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (int* fp_size = &size)
				fixed (int* fp_type = &type)
				{
					if      (Delegates.pglGetActiveAttribARB != null)
						Delegates.pglGetActiveAttribARB(programObj, index, maxLength, fp_length, fp_size, fp_type, name);
					else
						throw new InvalidOperationException("binding point GetActiveAttribARB cannot be found");
				}
			}
			LogProc("glGetActiveAttribARB({0}, {1}, {2}, {3}, {4}, {5}, {6})", programObj, index, maxLength, length, size, type, name);
		}

		/// <summary>
		/// Binding for glGetActiveUniformARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxLength">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetActiveUniformARB(UInt32 programObj, UInt32 index, Int32 maxLength, [Out] out Int32 length, [Out] out int size, [Out] out int type, [Out] StringBuilder name) {
			unsafe {
				fixed (Int32* fp_length = &length)
				fixed (int* fp_size = &size)
				fixed (int* fp_type = &type)
				{
					if      (Delegates.pglGetActiveUniformARB != null)
						Delegates.pglGetActiveUniformARB(programObj, index, maxLength, fp_length, fp_size, fp_type, name);
					else
						throw new InvalidOperationException("binding point GetActiveUniformARB cannot be found");
				}
			}
			LogProc("glGetActiveUniformARB({0}, {1}, {2}, {3}, {4}, {5}, {6})", programObj, index, maxLength, length, size, type, name);
		}

		/// <summary>
		/// Binding for glGetAttachedObjectsARB function.
		/// </summary>
		/// <param name="containerObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetAttachedObjectARB(UInt32 containerObj, Int32 maxCount, [Out] out Int32 count, [Out] UInt32[] obj) {
			unsafe {
				fixed (Int32* fp_count = &count)
				fixed (UInt32* fp_obj = obj)
				{
					if      (Delegates.pglGetAttachedObjectsARB != null)
						Delegates.pglGetAttachedObjectsARB(containerObj, maxCount, fp_count, fp_obj);
					else
						throw new InvalidOperationException("binding point GetAttachedObjectARB cannot be found");
				}
			}
			LogProc("glGetAttachedObjectsARB({0}, {1}, {2}, {3})", containerObj, maxCount, count, obj);
		}

		/// <summary>
		/// Binding for glGetAttachedObjectsARB function.
		/// </summary>
		/// <param name="containerObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxCount">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetAttachedObjectARB(UInt32 containerObj, Int32 maxCount, [Out] out Int32 count, out UInt32 obj) {
			unsafe {
				fixed (Int32* fp_count = &count)
				fixed (UInt32* fp_obj = &obj)
				{
					if      (Delegates.pglGetAttachedObjectsARB != null)
						Delegates.pglGetAttachedObjectsARB(containerObj, maxCount, fp_count, fp_obj);
					else
						throw new InvalidOperationException("binding point GetAttachedObjectARB cannot be found");
				}
			}
			LogProc("glGetAttachedObjectsARB({0}, {1}, {2}, {3})", containerObj, maxCount, count, obj);
		}
		

		/// <summary>
		/// Binding for glGetAttribLocationARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static int GetAttribLocationARB(UInt32 programObj, string name) {
			int retvalue;
			if      (Delegates.pglGetAttribLocationARB != null)
				retvalue = (Delegates.pglGetAttribLocationARB(programObj, name));
			else
				throw new InvalidOperationException("binding point GetAttribLocationARB cannot be found");
			LogProc("glGetAttribLocationARB({0}, {1}) = {2}", programObj, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetBufferParameterivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetBufferParameterARB(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetBufferParameterivARB != null)
						Delegates.pglGetBufferParameterivARB(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetBufferParameterARB cannot be found");
				}
			}
			LogProc("glGetBufferParameterivARB({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetBufferParameterivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetBufferParameterARB(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetBufferParameterivARB != null)
					Delegates.pglGetBufferParameterivARB(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetBufferParameterARB cannot be found");
			}
			LogProc("glGetBufferParameterivARB({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetBufferPointervARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetBufferPointerARB(int target, int pname, [Out] out IntPtr @params) {
			unsafe {
				fixed (IntPtr* fp_params = &@params)
				{
					if      (Delegates.pglGetBufferPointervARB != null)
						Delegates.pglGetBufferPointervARB(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetBufferPointerARB cannot be found");
				}
			}
			LogProc("glGetBufferPointervARB({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetBufferSubDataARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetBufferSubDataARB(int target, IntPtr offset, IntPtr size, [Out] object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetBufferSubDataARB != null)
					Delegates.pglGetBufferSubDataARB(target, offset, size, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetBufferSubDataARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glGetBufferSubDataARB({0}, {1}, {2}, {3})", target, offset, size, data);
		}

		/// <summary>
		/// Binding for glGetCompressedTexImageARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="img">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetCompressedTexImageARB(int target, int level, [Out] object img) {
			GCHandle pp_img = GCHandle.Alloc(img, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetCompressedTexImageARB != null)
					Delegates.pglGetCompressedTexImageARB(target, level, pp_img.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetCompressedTexImageARB cannot be found");
			} finally {
				pp_img.Free();
			}
			LogProc("glGetCompressedTexImageARB({0}, {1}, {2})", target, level, img);
		}

		/// <summary>
		/// Binding for glGetDebugMessageLogARB function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sources">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="types">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="severities">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="lengths">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="messageLog">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static UInt32 GetDebugMessageLogARB(UInt32 count, Int32 bufsize, [Out] int[] sources, [Out] int[] types, [Out] UInt32[] ids, [Out] int[] severities, [Out] Int32[] lengths, [Out] StringBuilder messageLog) {
			UInt32 retvalue;
			unsafe {
				fixed (int* fp_sources = sources)
				fixed (int* fp_types = types)
				fixed (UInt32* fp_ids = ids)
				fixed (int* fp_severities = severities)
				fixed (Int32* fp_lengths = lengths)
				{
					if      (Delegates.pglGetDebugMessageLogARB != null)
						retvalue = (Delegates.pglGetDebugMessageLogARB(count, bufsize, fp_sources, fp_types, fp_ids, fp_severities, fp_lengths, messageLog));
					else
						throw new InvalidOperationException("binding point GetDebugMessageLogARB cannot be found");
				}
			}
			LogProc("glGetDebugMessageLogARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) = {8}", count, bufsize, sources, types, ids, severities, lengths, messageLog, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetDebugMessageLogARB function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="bufsize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="sources">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="types">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="ids">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="severities">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="lengths">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="messageLog">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static UInt32 GetDebugMessageLogARB(UInt32 count, Int32 bufsize, [Out] int[] sources, [Out] int[] types, UInt32* ids, [Out] int[] severities, [Out] Int32[] lengths, [Out] StringBuilder messageLog) {
			UInt32 retvalue;
			unsafe {
				fixed (int* fp_sources = sources)
				fixed (int* fp_types = types)
				fixed (int* fp_severities = severities)
				fixed (Int32* fp_lengths = lengths)
				{
					if      (Delegates.pglGetDebugMessageLogARB != null)
						retvalue = (Delegates.pglGetDebugMessageLogARB(count, bufsize, fp_sources, fp_types, ids, fp_severities, fp_lengths, messageLog));
					else
						throw new InvalidOperationException("binding point GetDebugMessageLogARB cannot be found");
				}
			}
			LogProc("glGetDebugMessageLogARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) = {8}", count, bufsize, sources, types, "ids", severities, lengths, messageLog, retvalue);
			return (retvalue);
		}
		

		/// <summary>
		/// Binding for glGetGraphicsResetStatusARB function.
		/// </summary>
		/// @note This routine is available from OpenGL 4.1
		public static int GetGraphicsResetStatusARB() {
			int retvalue;
			if      (Delegates.pglGetGraphicsResetStatusARB != null)
				retvalue = (Delegates.pglGetGraphicsResetStatusARB());
			else
				throw new InvalidOperationException("binding point GetGraphicsResetStatusARB cannot be found");
			LogProc("glGetGraphicsResetStatusARB()");
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetHandleARB function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static UInt32 GetHandleARB(int pname) {
			UInt32 retvalue;
			if      (Delegates.pglGetHandleARB != null)
				retvalue = (Delegates.pglGetHandleARB(pname));
			else
				throw new InvalidOperationException("binding point GetHandleARB cannot be found");
			LogProc("glGetHandleARB({0}) = {1}", pname, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetInfoLogARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxLength">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="infoLog">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetInfoLogARB(UInt32 obj, Int32 maxLength, [Out] out Int32 length, [Out] StringBuilder infoLog) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetInfoLogARB != null)
						Delegates.pglGetInfoLogARB(obj, maxLength, fp_length, infoLog);
					else
						throw new InvalidOperationException("binding point GetInfoLogARB cannot be found");
				}
			}
			LogProc("glGetInfoLogARB({0}, {1}, {2}, {3})", obj, maxLength, length, infoLog);
		}

		/// <summary>
		/// Binding for glGetNamedStringARB function.
		/// </summary>
		/// <param name="namelen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stringlen">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetNamedStringARB(int namelen, string name, Int32 bufSize, [Out] out int stringlen, [Out] StringBuilder @string) {
			unsafe {
				fixed (int* fp_stringlen = &stringlen)
				{
					if      (Delegates.pglGetNamedStringARB != null)
						Delegates.pglGetNamedStringARB(namelen, name, bufSize, fp_stringlen, @string);
					else
						throw new InvalidOperationException("binding point GetNamedStringARB cannot be found");
				}
			}
			LogProc("glGetNamedStringARB({0}, {1}, {2}, {3}, {4})", namelen, name, bufSize, stringlen, @string);
		}

		/// <summary>
		/// Binding for glGetNamedStringivARB function.
		/// </summary>
		/// <param name="namelen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetNamedStringARB(int namelen, string name, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetNamedStringivARB != null)
						Delegates.pglGetNamedStringivARB(namelen, name, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedStringARB cannot be found");
				}
			}
			LogProc("glGetNamedStringivARB({0}, {1}, {2}, {3})", namelen, name, pname, @params);
		}

		/// <summary>
		/// Binding for glGetNamedStringivARB function.
		/// </summary>
		/// <param name="namelen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetNamedStringARB(int namelen, string name, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetNamedStringivARB != null)
						Delegates.pglGetNamedStringivARB(namelen, name, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetNamedStringARB cannot be found");
				}
			}
			LogProc("glGetNamedStringivARB({0}, {1}, {2}, {3})", namelen, name, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetNamedStringivARB function.
		/// </summary>
		/// <param name="namelen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetNamedStringARB(int namelen, string name, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetNamedStringivARB != null)
					Delegates.pglGetNamedStringivARB(namelen, name, pname, @params);
				else
					throw new InvalidOperationException("binding point GetNamedStringARB cannot be found");
			}
			LogProc("glGetNamedStringivARB({0}, {1}, {2}, {3})", namelen, name, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetnColorTableARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="table">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnColorTableARB(int target, int format, int type, Int32 bufSize, [Out] object table) {
			GCHandle pp_table = GCHandle.Alloc(table, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetnColorTableARB != null)
					Delegates.pglGetnColorTableARB(target, format, type, bufSize, pp_table.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetnColorTableARB cannot be found");
			} finally {
				pp_table.Free();
			}
			LogProc("glGetnColorTableARB({0}, {1}, {2}, {3}, {4})", target, format, type, bufSize, table);
		}

		/// <summary>
		/// Binding for glGetnCompressedTexImageARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="lod">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="img">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnCompressedTexImageARB(int target, int lod, Int32 bufSize, [Out] object img) {
			GCHandle pp_img = GCHandle.Alloc(img, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetnCompressedTexImageARB != null)
					Delegates.pglGetnCompressedTexImageARB(target, lod, bufSize, pp_img.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetnCompressedTexImageARB cannot be found");
			} finally {
				pp_img.Free();
			}
			LogProc("glGetnCompressedTexImageARB({0}, {1}, {2}, {3})", target, lod, bufSize, img);
		}

		/// <summary>
		/// Binding for glGetnConvolutionFilterARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="image">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnConvolutionFilterARB(int target, int format, int type, Int32 bufSize, [Out] object image) {
			GCHandle pp_image = GCHandle.Alloc(image, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetnConvolutionFilterARB != null)
					Delegates.pglGetnConvolutionFilterARB(target, format, type, bufSize, pp_image.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetnConvolutionFilterARB cannot be found");
			} finally {
				pp_image.Free();
			}
			LogProc("glGetnConvolutionFilterARB({0}, {1}, {2}, {3}, {4})", target, format, type, bufSize, image);
		}

		/// <summary>
		/// Binding for glGetnHistogramARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="reset">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnHistogramARB(int target, bool reset, int format, int type, Int32 bufSize, [Out] object values) {
			GCHandle pp_values = GCHandle.Alloc(values, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetnHistogramARB != null)
					Delegates.pglGetnHistogramARB(target, reset, format, type, bufSize, pp_values.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetnHistogramARB cannot be found");
			} finally {
				pp_values.Free();
			}
			LogProc("glGetnHistogramARB({0}, {1}, {2}, {3}, {4}, {5})", target, reset, format, type, bufSize, values);
		}

		/// <summary>
		/// Binding for glGetnMapdvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, [Out] double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglGetnMapdvARB != null)
						Delegates.pglGetnMapdvARB(target, query, bufSize, fp_v);
					else
						throw new InvalidOperationException("binding point GetnMapARB cannot be found");
				}
			}
			LogProc("glGetnMapdvARB({0}, {1}, {2}, {3})", target, query, bufSize, v);
		}

		/// <summary>
		/// Binding for glGetnMapdvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, out double v) {
			unsafe {
				fixed (double* fp_v = &v)
				{
					if      (Delegates.pglGetnMapdvARB != null)
						Delegates.pglGetnMapdvARB(target, query, bufSize, fp_v);
					else
						throw new InvalidOperationException("binding point GetnMapARB cannot be found");
				}
			}
			LogProc("glGetnMapdvARB({0}, {1}, {2}, {3})", target, query, bufSize, v);
		}
		
		/// <summary>
		/// Binding for glGetnMapdvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, double* v) {
			unsafe {
				if      (Delegates.pglGetnMapdvARB != null)
					Delegates.pglGetnMapdvARB(target, query, bufSize, v);
				else
					throw new InvalidOperationException("binding point GetnMapARB cannot be found");
			}
			LogProc("glGetnMapdvARB({0}, {1}, {2}, {3})", target, query, bufSize, "v");
		}
		

		/// <summary>
		/// Binding for glGetnMapfvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, [Out] float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglGetnMapfvARB != null)
						Delegates.pglGetnMapfvARB(target, query, bufSize, fp_v);
					else
						throw new InvalidOperationException("binding point GetnMapARB cannot be found");
				}
			}
			LogProc("glGetnMapfvARB({0}, {1}, {2}, {3})", target, query, bufSize, v);
		}

		/// <summary>
		/// Binding for glGetnMapfvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, out float v) {
			unsafe {
				fixed (float* fp_v = &v)
				{
					if      (Delegates.pglGetnMapfvARB != null)
						Delegates.pglGetnMapfvARB(target, query, bufSize, fp_v);
					else
						throw new InvalidOperationException("binding point GetnMapARB cannot be found");
				}
			}
			LogProc("glGetnMapfvARB({0}, {1}, {2}, {3})", target, query, bufSize, v);
		}
		
		/// <summary>
		/// Binding for glGetnMapfvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, float* v) {
			unsafe {
				if      (Delegates.pglGetnMapfvARB != null)
					Delegates.pglGetnMapfvARB(target, query, bufSize, v);
				else
					throw new InvalidOperationException("binding point GetnMapARB cannot be found");
			}
			LogProc("glGetnMapfvARB({0}, {1}, {2}, {3})", target, query, bufSize, "v");
		}
		

		/// <summary>
		/// Binding for glGetnMapivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, [Out] int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglGetnMapivARB != null)
						Delegates.pglGetnMapivARB(target, query, bufSize, fp_v);
					else
						throw new InvalidOperationException("binding point GetnMapARB cannot be found");
				}
			}
			LogProc("glGetnMapivARB({0}, {1}, {2}, {3})", target, query, bufSize, v);
		}

		/// <summary>
		/// Binding for glGetnMapivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, out int v) {
			unsafe {
				fixed (int* fp_v = &v)
				{
					if      (Delegates.pglGetnMapivARB != null)
						Delegates.pglGetnMapivARB(target, query, bufSize, fp_v);
					else
						throw new InvalidOperationException("binding point GetnMapARB cannot be found");
				}
			}
			LogProc("glGetnMapivARB({0}, {1}, {2}, {3})", target, query, bufSize, v);
		}
		
		/// <summary>
		/// Binding for glGetnMapivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="query">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMapARB(int target, int query, Int32 bufSize, int* v) {
			unsafe {
				if      (Delegates.pglGetnMapivARB != null)
					Delegates.pglGetnMapivARB(target, query, bufSize, v);
				else
					throw new InvalidOperationException("binding point GetnMapARB cannot be found");
			}
			LogProc("glGetnMapivARB({0}, {1}, {2}, {3})", target, query, bufSize, "v");
		}
		

		/// <summary>
		/// Binding for glGetnMinmaxARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="reset">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnMinmaxARB(int target, bool reset, int format, int type, Int32 bufSize, [Out] object values) {
			GCHandle pp_values = GCHandle.Alloc(values, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetnMinmaxARB != null)
					Delegates.pglGetnMinmaxARB(target, reset, format, type, bufSize, pp_values.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetnMinmaxARB cannot be found");
			} finally {
				pp_values.Free();
			}
			LogProc("glGetnMinmaxARB({0}, {1}, {2}, {3}, {4}, {5})", target, reset, format, type, bufSize, values);
		}

		/// <summary>
		/// Binding for glGetnPixelMapfvARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, [Out] float[] values) {
			unsafe {
				fixed (float* fp_values = values)
				{
					if      (Delegates.pglGetnPixelMapfvARB != null)
						Delegates.pglGetnPixelMapfvARB(map, bufSize, fp_values);
					else
						throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
				}
			}
			LogProc("glGetnPixelMapfvARB({0}, {1}, {2})", map, bufSize, values);
		}

		/// <summary>
		/// Binding for glGetnPixelMapfvARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, out float values) {
			unsafe {
				fixed (float* fp_values = &values)
				{
					if      (Delegates.pglGetnPixelMapfvARB != null)
						Delegates.pglGetnPixelMapfvARB(map, bufSize, fp_values);
					else
						throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
				}
			}
			LogProc("glGetnPixelMapfvARB({0}, {1}, {2})", map, bufSize, values);
		}
		
		/// <summary>
		/// Binding for glGetnPixelMapfvARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, float* values) {
			unsafe {
				if      (Delegates.pglGetnPixelMapfvARB != null)
					Delegates.pglGetnPixelMapfvARB(map, bufSize, values);
				else
					throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
			}
			LogProc("glGetnPixelMapfvARB({0}, {1}, {2})", map, bufSize, "values");
		}
		

		/// <summary>
		/// Binding for glGetnPixelMapuivARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, [Out] UInt32[] values) {
			unsafe {
				fixed (UInt32* fp_values = values)
				{
					if      (Delegates.pglGetnPixelMapuivARB != null)
						Delegates.pglGetnPixelMapuivARB(map, bufSize, fp_values);
					else
						throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
				}
			}
			LogProc("glGetnPixelMapuivARB({0}, {1}, {2})", map, bufSize, values);
		}

		/// <summary>
		/// Binding for glGetnPixelMapuivARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, out UInt32 values) {
			unsafe {
				fixed (UInt32* fp_values = &values)
				{
					if      (Delegates.pglGetnPixelMapuivARB != null)
						Delegates.pglGetnPixelMapuivARB(map, bufSize, fp_values);
					else
						throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
				}
			}
			LogProc("glGetnPixelMapuivARB({0}, {1}, {2})", map, bufSize, values);
		}
		
		/// <summary>
		/// Binding for glGetnPixelMapuivARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, UInt32* values) {
			unsafe {
				if      (Delegates.pglGetnPixelMapuivARB != null)
					Delegates.pglGetnPixelMapuivARB(map, bufSize, values);
				else
					throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
			}
			LogProc("glGetnPixelMapuivARB({0}, {1}, {2})", map, bufSize, "values");
		}
		

		/// <summary>
		/// Binding for glGetnPixelMapusvARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt16*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, [Out] UInt16[] values) {
			unsafe {
				fixed (UInt16* fp_values = values)
				{
					if      (Delegates.pglGetnPixelMapusvARB != null)
						Delegates.pglGetnPixelMapusvARB(map, bufSize, fp_values);
					else
						throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
				}
			}
			LogProc("glGetnPixelMapusvARB({0}, {1}, {2})", map, bufSize, values);
		}

		/// <summary>
		/// Binding for glGetnPixelMapusvARB function.
		/// </summary>
		/// <param name="map">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="values">
		/// A <see cref="T:System.UInt16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPixelMapARB(int map, Int32 bufSize, out UInt16 values) {
			unsafe {
				fixed (UInt16* fp_values = &values)
				{
					if      (Delegates.pglGetnPixelMapusvARB != null)
						Delegates.pglGetnPixelMapusvARB(map, bufSize, fp_values);
					else
						throw new InvalidOperationException("binding point GetnPixelMapARB cannot be found");
				}
			}
			LogProc("glGetnPixelMapusvARB({0}, {1}, {2})", map, bufSize, values);
		}
		

		/// <summary>
		/// Binding for glGetnPolygonStippleARB function.
		/// </summary>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pattern">
		/// A <see cref="T:System.Byte*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPolygonStippleARB(Int32 bufSize, [Out] byte[] pattern) {
			unsafe {
				fixed (byte* fp_pattern = pattern)
				{
					if      (Delegates.pglGetnPolygonStippleARB != null)
						Delegates.pglGetnPolygonStippleARB(bufSize, fp_pattern);
					else
						throw new InvalidOperationException("binding point GetnPolygonStippleARB cannot be found");
				}
			}
			LogProc("glGetnPolygonStippleARB({0}, {1})", bufSize, pattern);
		}

		/// <summary>
		/// Binding for glGetnPolygonStippleARB function.
		/// </summary>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pattern">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnPolygonStippleARB(Int32 bufSize, out byte pattern) {
			unsafe {
				fixed (byte* fp_pattern = &pattern)
				{
					if      (Delegates.pglGetnPolygonStippleARB != null)
						Delegates.pglGetnPolygonStippleARB(bufSize, fp_pattern);
					else
						throw new InvalidOperationException("binding point GetnPolygonStippleARB cannot be found");
				}
			}
			LogProc("glGetnPolygonStippleARB({0}, {1})", bufSize, pattern);
		}
		

		/// <summary>
		/// Binding for glGetnSeparableFilterARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="rowBufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="row">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="columnBufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="column">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="span">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 0 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnSeparableFilterARB(int target, int format, int type, Int32 rowBufSize, [Out] object row, Int32 columnBufSize, [Out] object column, [Out] object span) {
			GCHandle pp_row = GCHandle.Alloc(row, GCHandleType.Pinned);
			GCHandle pp_column = GCHandle.Alloc(column, GCHandleType.Pinned);
			GCHandle pp_span = GCHandle.Alloc(span, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetnSeparableFilterARB != null)
					Delegates.pglGetnSeparableFilterARB(target, format, type, rowBufSize, pp_row.AddrOfPinnedObject(), columnBufSize, pp_column.AddrOfPinnedObject(), pp_span.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetnSeparableFilterARB cannot be found");
			} finally {
				pp_row.Free();
				pp_column.Free();
				pp_span.Free();
			}
			LogProc("glGetnSeparableFilterARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", target, format, type, rowBufSize, row, columnBufSize, column, span);
		}

		/// <summary>
		/// Binding for glGetnTexImageARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="level">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="img">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnTexImageARB(int target, int level, int format, int type, Int32 bufSize, [Out] object img) {
			GCHandle pp_img = GCHandle.Alloc(img, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetnTexImageARB != null)
					Delegates.pglGetnTexImageARB(target, level, format, type, bufSize, pp_img.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetnTexImageARB cannot be found");
			} finally {
				pp_img.Free();
			}
			LogProc("glGetnTexImageARB({0}, {1}, {2}, {3}, {4}, {5})", target, level, format, type, bufSize, img);
		}

		/// <summary>
		/// Binding for glGetnUniformdvARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetnUniformdvARB != null)
						Delegates.pglGetnUniformdvARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformdvARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}

		/// <summary>
		/// Binding for glGetnUniformdvARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, out double @params) {
			unsafe {
				fixed (double* fp_params = &@params)
				{
					if      (Delegates.pglGetnUniformdvARB != null)
						Delegates.pglGetnUniformdvARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformdvARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}
		
		/// <summary>
		/// Binding for glGetnUniformdvARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, double* @params) {
			unsafe {
				if      (Delegates.pglGetnUniformdvARB != null)
					Delegates.pglGetnUniformdvARB(program, location, bufSize, @params);
				else
					throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
			}
			LogProc("glGetnUniformdvARB({0}, {1}, {2}, {3})", program, location, bufSize, "@params");
		}
		

		/// <summary>
		/// Binding for glGetnUniformfvARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetnUniformfvARB != null)
						Delegates.pglGetnUniformfvARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformfvARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}

		/// <summary>
		/// Binding for glGetnUniformfvARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetnUniformfvARB != null)
						Delegates.pglGetnUniformfvARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformfvARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}
		
		/// <summary>
		/// Binding for glGetnUniformfvARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, float* @params) {
			unsafe {
				if      (Delegates.pglGetnUniformfvARB != null)
					Delegates.pglGetnUniformfvARB(program, location, bufSize, @params);
				else
					throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
			}
			LogProc("glGetnUniformfvARB({0}, {1}, {2}, {3})", program, location, bufSize, "@params");
		}
		

		/// <summary>
		/// Binding for glGetnUniformivARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetnUniformivARB != null)
						Delegates.pglGetnUniformivARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformivARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}

		/// <summary>
		/// Binding for glGetnUniformivARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetnUniformivARB != null)
						Delegates.pglGetnUniformivARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformivARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}
		
		/// <summary>
		/// Binding for glGetnUniformivARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, int* @params) {
			unsafe {
				if      (Delegates.pglGetnUniformivARB != null)
					Delegates.pglGetnUniformivARB(program, location, bufSize, @params);
				else
					throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
			}
			LogProc("glGetnUniformivARB({0}, {1}, {2}, {3})", program, location, bufSize, "@params");
		}
		

		/// <summary>
		/// Binding for glGetnUniformuivARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetnUniformuivARB != null)
						Delegates.pglGetnUniformuivARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformuivARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}

		/// <summary>
		/// Binding for glGetnUniformuivARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetnUniformuivARB != null)
						Delegates.pglGetnUniformuivARB(program, location, bufSize, fp_params);
					else
						throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
				}
			}
			LogProc("glGetnUniformuivARB({0}, {1}, {2}, {3})", program, location, bufSize, @params);
		}
		
		/// <summary>
		/// Binding for glGetnUniformuivARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void GetnUniformARB(UInt32 program, int location, Int32 bufSize, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetnUniformuivARB != null)
					Delegates.pglGetnUniformuivARB(program, location, bufSize, @params);
				else
					throw new InvalidOperationException("binding point GetnUniformARB cannot be found");
			}
			LogProc("glGetnUniformuivARB({0}, {1}, {2}, {3})", program, location, bufSize, "@params");
		}
		

		/// <summary>
		/// Binding for glGetObjectParameterfvARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetObjectParameterARB(UInt32 obj, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetObjectParameterfvARB != null)
						Delegates.pglGetObjectParameterfvARB(obj, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetObjectParameterARB cannot be found");
				}
			}
			LogProc("glGetObjectParameterfvARB({0}, {1}, {2})", obj, pname, @params);
		}

		/// <summary>
		/// Binding for glGetObjectParameterfvARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetObjectParameterARB(UInt32 obj, int pname, out float @params) {
			unsafe {
				fixed (float* fp_params = &@params)
				{
					if      (Delegates.pglGetObjectParameterfvARB != null)
						Delegates.pglGetObjectParameterfvARB(obj, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetObjectParameterARB cannot be found");
				}
			}
			LogProc("glGetObjectParameterfvARB({0}, {1}, {2})", obj, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetObjectParameterfvARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetObjectParameterARB(UInt32 obj, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetObjectParameterfvARB != null)
					Delegates.pglGetObjectParameterfvARB(obj, pname, @params);
				else
					throw new InvalidOperationException("binding point GetObjectParameterARB cannot be found");
			}
			LogProc("glGetObjectParameterfvARB({0}, {1}, {2})", obj, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetObjectParameterivARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetObjectParameterARB(UInt32 obj, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetObjectParameterivARB != null)
						Delegates.pglGetObjectParameterivARB(obj, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetObjectParameterARB cannot be found");
				}
			}
			LogProc("glGetObjectParameterivARB({0}, {1}, {2})", obj, pname, @params);
		}

		/// <summary>
		/// Binding for glGetObjectParameterivARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetObjectParameterARB(UInt32 obj, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetObjectParameterivARB != null)
						Delegates.pglGetObjectParameterivARB(obj, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetObjectParameterARB cannot be found");
				}
			}
			LogProc("glGetObjectParameterivARB({0}, {1}, {2})", obj, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetObjectParameterivARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetObjectParameterARB(UInt32 obj, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetObjectParameterivARB != null)
					Delegates.pglGetObjectParameterivARB(obj, pname, @params);
				else
					throw new InvalidOperationException("binding point GetObjectParameterARB cannot be found");
			}
			LogProc("glGetObjectParameterivARB({0}, {1}, {2})", obj, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetProgramEnvParameterdvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramEnvParameterARB(int target, UInt32 index, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetProgramEnvParameterdvARB != null)
						Delegates.pglGetProgramEnvParameterdvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgramEnvParameterARB cannot be found");
				}
			}
			LogProc("glGetProgramEnvParameterdvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glGetProgramEnvParameterdvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramEnvParameterARB(int target, UInt32 index, double* @params) {
			unsafe {
				if      (Delegates.pglGetProgramEnvParameterdvARB != null)
					Delegates.pglGetProgramEnvParameterdvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point GetProgramEnvParameterARB cannot be found");
			}
			LogProc("glGetProgramEnvParameterdvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetProgramEnvParameterfvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramEnvParameterARB(int target, UInt32 index, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetProgramEnvParameterfvARB != null)
						Delegates.pglGetProgramEnvParameterfvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgramEnvParameterARB cannot be found");
				}
			}
			LogProc("glGetProgramEnvParameterfvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glGetProgramEnvParameterfvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramEnvParameterARB(int target, UInt32 index, float* @params) {
			unsafe {
				if      (Delegates.pglGetProgramEnvParameterfvARB != null)
					Delegates.pglGetProgramEnvParameterfvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point GetProgramEnvParameterARB cannot be found");
			}
			LogProc("glGetProgramEnvParameterfvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetProgramivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramARB(int target, int pname, [Out] out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetProgramivARB != null)
						Delegates.pglGetProgramivARB(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgramARB cannot be found");
				}
			}
			LogProc("glGetProgramivARB({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetProgramLocalParameterdvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramLocalParameterARB(int target, UInt32 index, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetProgramLocalParameterdvARB != null)
						Delegates.pglGetProgramLocalParameterdvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgramLocalParameterARB cannot be found");
				}
			}
			LogProc("glGetProgramLocalParameterdvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glGetProgramLocalParameterdvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramLocalParameterARB(int target, UInt32 index, double* @params) {
			unsafe {
				if      (Delegates.pglGetProgramLocalParameterdvARB != null)
					Delegates.pglGetProgramLocalParameterdvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point GetProgramLocalParameterARB cannot be found");
			}
			LogProc("glGetProgramLocalParameterdvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetProgramLocalParameterfvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramLocalParameterARB(int target, UInt32 index, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetProgramLocalParameterfvARB != null)
						Delegates.pglGetProgramLocalParameterfvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point GetProgramLocalParameterARB cannot be found");
				}
			}
			LogProc("glGetProgramLocalParameterfvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glGetProgramLocalParameterfvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramLocalParameterARB(int target, UInt32 index, float* @params) {
			unsafe {
				if      (Delegates.pglGetProgramLocalParameterfvARB != null)
					Delegates.pglGetProgramLocalParameterfvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point GetProgramLocalParameterARB cannot be found");
			}
			LogProc("glGetProgramLocalParameterfvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glGetProgramStringARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetProgramStringARB(int target, int pname, [Out] object @string) {
			GCHandle pp_string = GCHandle.Alloc(@string, GCHandleType.Pinned);
			try {
				if      (Delegates.pglGetProgramStringARB != null)
					Delegates.pglGetProgramStringARB(target, pname, pp_string.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point GetProgramStringARB cannot be found");
			} finally {
				pp_string.Free();
			}
			LogProc("glGetProgramStringARB({0}, {1}, {2})", target, pname, @string);
		}

		/// <summary>
		/// Binding for glGetQueryivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryARB(int target, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetQueryivARB != null)
						Delegates.pglGetQueryivARB(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryARB cannot be found");
				}
			}
			LogProc("glGetQueryivARB({0}, {1}, {2})", target, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryARB(int target, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryivARB != null)
						Delegates.pglGetQueryivARB(target, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryARB cannot be found");
				}
			}
			LogProc("glGetQueryivARB({0}, {1}, {2})", target, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetQueryivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryARB(int target, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetQueryivARB != null)
					Delegates.pglGetQueryivARB(target, pname, @params);
				else
					throw new InvalidOperationException("binding point GetQueryARB cannot be found");
			}
			LogProc("glGetQueryivARB({0}, {1}, {2})", target, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetQueryObjectivARB function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectARB(UInt32 id, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjectivARB != null)
						Delegates.pglGetQueryObjectivARB(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectARB cannot be found");
				}
			}
			LogProc("glGetQueryObjectivARB({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjectivARB function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectARB(UInt32 id, int pname, out int @params) {
			unsafe {
				fixed (int* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjectivARB != null)
						Delegates.pglGetQueryObjectivARB(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectARB cannot be found");
				}
			}
			LogProc("glGetQueryObjectivARB({0}, {1}, {2})", id, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetQueryObjectivARB function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectARB(UInt32 id, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetQueryObjectivARB != null)
					Delegates.pglGetQueryObjectivARB(id, pname, @params);
				else
					throw new InvalidOperationException("binding point GetQueryObjectARB cannot be found");
			}
			LogProc("glGetQueryObjectivARB({0}, {1}, {2})", id, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetQueryObjectuivARB function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectuivARB(UInt32 id, int pname, [Out] UInt32[] @params) {
			unsafe {
				fixed (UInt32* fp_params = @params)
				{
					if      (Delegates.pglGetQueryObjectuivARB != null)
						Delegates.pglGetQueryObjectuivARB(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectuivARB cannot be found");
				}
			}
			LogProc("glGetQueryObjectuivARB({0}, {1}, {2})", id, pname, @params);
		}

		/// <summary>
		/// Binding for glGetQueryObjectuivARB function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectuivARB(UInt32 id, int pname, out UInt32 @params) {
			unsafe {
				fixed (UInt32* fp_params = &@params)
				{
					if      (Delegates.pglGetQueryObjectuivARB != null)
						Delegates.pglGetQueryObjectuivARB(id, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetQueryObjectuivARB cannot be found");
				}
			}
			LogProc("glGetQueryObjectuivARB({0}, {1}, {2})", id, pname, @params);
		}
		
		/// <summary>
		/// Binding for glGetQueryObjectuivARB function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static void GetQueryObjectuivARB(UInt32 id, int pname, UInt32* @params) {
			unsafe {
				if      (Delegates.pglGetQueryObjectuivARB != null)
					Delegates.pglGetQueryObjectuivARB(id, pname, @params);
				else
					throw new InvalidOperationException("binding point GetQueryObjectuivARB cannot be found");
			}
			LogProc("glGetQueryObjectuivARB({0}, {1}, {2})", id, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetShaderSourceARB function.
		/// </summary>
		/// <param name="obj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="maxLength">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// <param name="source">
		/// A <see cref="T:System.Text.StringBuilder"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetShaderSourceARB(UInt32 obj, Int32 maxLength, [Out] out Int32 length, [Out] StringBuilder source) {
			unsafe {
				fixed (Int32* fp_length = &length)
				{
					if      (Delegates.pglGetShaderSourceARB != null)
						Delegates.pglGetShaderSourceARB(obj, maxLength, fp_length, source);
					else
						throw new InvalidOperationException("binding point GetShaderSourceARB cannot be found");
				}
			}
			LogProc("glGetShaderSourceARB({0}, {1}, {2}, {3})", obj, maxLength, length, source);
		}

		/// <summary>
		/// Binding for glGetUniformfvARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetUniformARB(UInt32 programObj, int location, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetUniformfvARB != null)
						Delegates.pglGetUniformfvARB(programObj, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniformARB cannot be found");
				}
			}
			LogProc("glGetUniformfvARB({0}, {1}, {2})", programObj, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformfvARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetUniformARB(UInt32 programObj, int location, float* @params) {
			unsafe {
				if      (Delegates.pglGetUniformfvARB != null)
					Delegates.pglGetUniformfvARB(programObj, location, @params);
				else
					throw new InvalidOperationException("binding point GetUniformARB cannot be found");
			}
			LogProc("glGetUniformfvARB({0}, {1}, {2})", programObj, location, "@params");
		}
		

		/// <summary>
		/// Binding for glGetUniformivARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetUniformARB(UInt32 programObj, int location, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetUniformivARB != null)
						Delegates.pglGetUniformivARB(programObj, location, fp_params);
					else
						throw new InvalidOperationException("binding point GetUniformARB cannot be found");
				}
			}
			LogProc("glGetUniformivARB({0}, {1}, {2})", programObj, location, @params);
		}

		/// <summary>
		/// Binding for glGetUniformivARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void GetUniformARB(UInt32 programObj, int location, int* @params) {
			unsafe {
				if      (Delegates.pglGetUniformivARB != null)
					Delegates.pglGetUniformivARB(programObj, location, @params);
				else
					throw new InvalidOperationException("binding point GetUniformARB cannot be found");
			}
			LogProc("glGetUniformivARB({0}, {1}, {2})", programObj, location, "@params");
		}
		

		/// <summary>
		/// Binding for glGetUniformLocationARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static int GetUniformLocationARB(UInt32 programObj, string name) {
			int retvalue;
			if      (Delegates.pglGetUniformLocationARB != null)
				retvalue = (Delegates.pglGetUniformLocationARB(programObj, name));
			else
				throw new InvalidOperationException("binding point GetUniformLocationARB cannot be found");
			LogProc("glGetUniformLocationARB({0}, {1}) = {2}", programObj, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glGetVertexAttribdvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetVertexAttribARB(UInt32 index, int pname, [Out] double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribdvARB != null)
						Delegates.pglGetVertexAttribdvARB(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribARB cannot be found");
				}
			}
			LogProc("glGetVertexAttribdvARB({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribdvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetVertexAttribARB(UInt32 index, int pname, double* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribdvARB != null)
					Delegates.pglGetVertexAttribdvARB(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttribARB cannot be found");
			}
			LogProc("glGetVertexAttribdvARB({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribfvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetVertexAttribARB(UInt32 index, int pname, [Out] float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribfvARB != null)
						Delegates.pglGetVertexAttribfvARB(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribARB cannot be found");
				}
			}
			LogProc("glGetVertexAttribfvARB({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribfvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetVertexAttribARB(UInt32 index, int pname, float* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribfvARB != null)
					Delegates.pglGetVertexAttribfvARB(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttribARB cannot be found");
			}
			LogProc("glGetVertexAttribfvARB({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32*"/>.
		/// This parameter holds data returned from function.
		/// This array parameter shall have a fixed length of 4 element(s).
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetVertexAttribARB(UInt32 index, int pname, [Out] int[] @params) {
			unsafe {
				fixed (int* fp_params = @params)
				{
					if      (Delegates.pglGetVertexAttribivARB != null)
						Delegates.pglGetVertexAttribivARB(index, pname, fp_params);
					else
						throw new InvalidOperationException("binding point GetVertexAttribARB cannot be found");
				}
			}
			LogProc("glGetVertexAttribivARB({0}, {1}, {2})", index, pname, @params);
		}

		/// <summary>
		/// Binding for glGetVertexAttribivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetVertexAttribARB(UInt32 index, int pname, int* @params) {
			unsafe {
				if      (Delegates.pglGetVertexAttribivARB != null)
					Delegates.pglGetVertexAttribivARB(index, pname, @params);
				else
					throw new InvalidOperationException("binding point GetVertexAttribARB cannot be found");
			}
			LogProc("glGetVertexAttribivARB({0}, {1}, {2})", index, pname, "@params");
		}
		

		/// <summary>
		/// Binding for glGetVertexAttribPointervARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void GetVertexAttribPointerARB(UInt32 index, int pname, [Out] out IntPtr pointer) {
			unsafe {
				fixed (IntPtr* fp_pointer = &pointer)
				{
					if      (Delegates.pglGetVertexAttribPointervARB != null)
						Delegates.pglGetVertexAttribPointervARB(index, pname, fp_pointer);
					else
						throw new InvalidOperationException("binding point GetVertexAttribPointerARB cannot be found");
				}
			}
			LogProc("glGetVertexAttribPointervARB({0}, {1}, {2})", index, pname, pointer);
		}

		/// <summary>
		/// Binding for glIsBufferARB function.
		/// </summary>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsBufferARB(UInt32 buffer) {
			bool retvalue;
			if      (Delegates.pglIsBufferARB != null)
				retvalue = (Delegates.pglIsBufferARB(buffer));
			else
				throw new InvalidOperationException("binding point IsBufferARB cannot be found");
			LogProc("glIsBufferARB({0}) = {1}", buffer, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsNamedStringARB function.
		/// </summary>
		/// <param name="namelen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool IsNamedStringARB(int namelen, string name) {
			bool retvalue;
			if      (Delegates.pglIsNamedStringARB != null)
				retvalue = (Delegates.pglIsNamedStringARB(namelen, name));
			else
				throw new InvalidOperationException("binding point IsNamedStringARB cannot be found");
			LogProc("glIsNamedStringARB({0}, {1}) = {2}", namelen, name, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsProgramARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static bool IsProgramARB(UInt32 program) {
			bool retvalue;
			if      (Delegates.pglIsProgramARB != null)
				retvalue = (Delegates.pglIsProgramARB(program));
			else
				throw new InvalidOperationException("binding point IsProgramARB cannot be found");
			LogProc("glIsProgramARB({0}) = {1}", program, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glIsQueryARB function.
		/// </summary>
		/// <param name="id">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.5
		public static bool IsQueryARB(UInt32 id) {
			bool retvalue;
			if      (Delegates.pglIsQueryARB != null)
				retvalue = (Delegates.pglIsQueryARB(id));
			else
				throw new InvalidOperationException("binding point IsQueryARB cannot be found");
			LogProc("glIsQueryARB({0}) = {1}", id, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glLinkProgramARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void LinkProgramARB(UInt32 programObj) {
			if      (Delegates.pglLinkProgramARB != null)
				Delegates.pglLinkProgramARB(programObj);
			else
				throw new InvalidOperationException("binding point LinkProgramARB cannot be found");
			LogProc("glLinkProgramARB({0})", programObj);
		}

		/// <summary>
		/// Binding for glLoadTransposeMatrixdARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void LoadTransposeMatrixARB(double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglLoadTransposeMatrixdARB != null)
						Delegates.pglLoadTransposeMatrixdARB(fp_m);
					else
						throw new InvalidOperationException("binding point LoadTransposeMatrixARB cannot be found");
				}
			}
			LogProc("glLoadTransposeMatrixdARB({0})", m);
		}

		/// <summary>
		/// Binding for glLoadTransposeMatrixdARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void LoadTransposeMatrixARB(double* m) {
			unsafe {
				if      (Delegates.pglLoadTransposeMatrixdARB != null)
					Delegates.pglLoadTransposeMatrixdARB(m);
				else
					throw new InvalidOperationException("binding point LoadTransposeMatrixARB cannot be found");
			}
			LogProc("glLoadTransposeMatrixdARB({0})", "m");
		}
		

		/// <summary>
		/// Binding for glLoadTransposeMatrixfARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void LoadTransposeMatrixARB(float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglLoadTransposeMatrixfARB != null)
						Delegates.pglLoadTransposeMatrixfARB(fp_m);
					else
						throw new InvalidOperationException("binding point LoadTransposeMatrixARB cannot be found");
				}
			}
			LogProc("glLoadTransposeMatrixfARB({0})", m);
		}

		/// <summary>
		/// Binding for glLoadTransposeMatrixfARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void LoadTransposeMatrixARB(float* m) {
			unsafe {
				if      (Delegates.pglLoadTransposeMatrixfARB != null)
					Delegates.pglLoadTransposeMatrixfARB(m);
				else
					throw new InvalidOperationException("binding point LoadTransposeMatrixARB cannot be found");
			}
			LogProc("glLoadTransposeMatrixfARB({0})", "m");
		}
		

		/// <summary>
		/// Binding for glMapBufferARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="access">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static IntPtr MapBufferARB(int target, int access) {
			IntPtr retvalue;
			if      (Delegates.pglMapBufferARB != null)
				retvalue = (Delegates.pglMapBufferARB(target, access));
			else
				throw new InvalidOperationException("binding point MapBufferARB cannot be found");
			LogProc("glMapBufferARB({0}, {1}) = {2}", target, access, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glMatrixIndexPointerARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MatrixIndexPointerARB(int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglMatrixIndexPointerARB != null)
					Delegates.pglMatrixIndexPointerARB(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point MatrixIndexPointerARB cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glMatrixIndexPointerARB({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glMatrixIndexubvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MatrixIndexARB(int size, byte[] indices) {
			unsafe {
				fixed (byte* fp_indices = indices)
				{
					if      (Delegates.pglMatrixIndexubvARB != null)
						Delegates.pglMatrixIndexubvARB(size, fp_indices);
					else
						throw new InvalidOperationException("binding point MatrixIndexARB cannot be found");
				}
			}
			LogProc("glMatrixIndexubvARB({0}, {1})", size, indices);
		}

		/// <summary>
		/// Binding for glMatrixIndexuivARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MatrixIndexARB(int size, UInt32[] indices) {
			unsafe {
				fixed (UInt32* fp_indices = indices)
				{
					if      (Delegates.pglMatrixIndexuivARB != null)
						Delegates.pglMatrixIndexuivARB(size, fp_indices);
					else
						throw new InvalidOperationException("binding point MatrixIndexARB cannot be found");
				}
			}
			LogProc("glMatrixIndexuivARB({0}, {1})", size, indices);
		}

		/// <summary>
		/// Binding for glMatrixIndexuivARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MatrixIndexARB(int size, UInt32* indices) {
			unsafe {
				if      (Delegates.pglMatrixIndexuivARB != null)
					Delegates.pglMatrixIndexuivARB(size, indices);
				else
					throw new InvalidOperationException("binding point MatrixIndexARB cannot be found");
			}
			LogProc("glMatrixIndexuivARB({0}, {1})", size, "indices");
		}
		

		/// <summary>
		/// Binding for glMatrixIndexusvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="indices">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void MatrixIndexARB(int size, UInt16[] indices) {
			unsafe {
				fixed (UInt16* fp_indices = indices)
				{
					if      (Delegates.pglMatrixIndexusvARB != null)
						Delegates.pglMatrixIndexusvARB(size, fp_indices);
					else
						throw new InvalidOperationException("binding point MatrixIndexARB cannot be found");
				}
			}
			LogProc("glMatrixIndexusvARB({0}, {1})", size, indices);
		}

		/// <summary>
		/// Binding for glMinSampleShadingARB function.
		/// </summary>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MinSampleShadingARB(float value) {
			if      (Delegates.pglMinSampleShadingARB != null)
				Delegates.pglMinSampleShadingARB(value);
			else
				throw new InvalidOperationException("binding point MinSampleShadingARB cannot be found");
			LogProc("glMinSampleShadingARB({0})", value);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1dARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, double s) {
			if      (Delegates.pglMultiTexCoord1dARB != null)
				Delegates.pglMultiTexCoord1dARB(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
			LogProc("glMultiTexCoord1dARB({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1dvARB != null)
						Delegates.pglMultiTexCoord1dvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord1dvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1fARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, float s) {
			if      (Delegates.pglMultiTexCoord1fARB != null)
				Delegates.pglMultiTexCoord1fARB(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
			LogProc("glMultiTexCoord1fARB({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1fvARB != null)
						Delegates.pglMultiTexCoord1fvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord1fvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1iARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, int s) {
			if      (Delegates.pglMultiTexCoord1iARB != null)
				Delegates.pglMultiTexCoord1iARB(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
			LogProc("glMultiTexCoord1iARB({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1ivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1ivARB != null)
						Delegates.pglMultiTexCoord1ivARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord1ivARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1sARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, Int16 s) {
			if      (Delegates.pglMultiTexCoord1sARB != null)
				Delegates.pglMultiTexCoord1sARB(target, s);
			else
				throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
			LogProc("glMultiTexCoord1sARB({0}, {1})", target, s);
		}

		/// <summary>
		/// Binding for glMultiTexCoord1svARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord1ARB(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord1svARB != null)
						Delegates.pglMultiTexCoord1svARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord1ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord1svARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2dARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, double s, double t) {
			if      (Delegates.pglMultiTexCoord2dARB != null)
				Delegates.pglMultiTexCoord2dARB(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
			LogProc("glMultiTexCoord2dARB({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2dvARB != null)
						Delegates.pglMultiTexCoord2dvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord2dvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2fARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, float s, float t) {
			if      (Delegates.pglMultiTexCoord2fARB != null)
				Delegates.pglMultiTexCoord2fARB(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
			LogProc("glMultiTexCoord2fARB({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2fvARB != null)
						Delegates.pglMultiTexCoord2fvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord2fvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2iARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, int s, int t) {
			if      (Delegates.pglMultiTexCoord2iARB != null)
				Delegates.pglMultiTexCoord2iARB(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
			LogProc("glMultiTexCoord2iARB({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2ivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2ivARB != null)
						Delegates.pglMultiTexCoord2ivARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord2ivARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2sARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, Int16 s, Int16 t) {
			if      (Delegates.pglMultiTexCoord2sARB != null)
				Delegates.pglMultiTexCoord2sARB(target, s, t);
			else
				throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
			LogProc("glMultiTexCoord2sARB({0}, {1}, {2})", target, s, t);
		}

		/// <summary>
		/// Binding for glMultiTexCoord2svARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord2ARB(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord2svARB != null)
						Delegates.pglMultiTexCoord2svARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord2ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord2svARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3dARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, double s, double t, double r) {
			if      (Delegates.pglMultiTexCoord3dARB != null)
				Delegates.pglMultiTexCoord3dARB(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
			LogProc("glMultiTexCoord3dARB({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3dvARB != null)
						Delegates.pglMultiTexCoord3dvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord3dvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3fARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, float s, float t, float r) {
			if      (Delegates.pglMultiTexCoord3fARB != null)
				Delegates.pglMultiTexCoord3fARB(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
			LogProc("glMultiTexCoord3fARB({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3fvARB != null)
						Delegates.pglMultiTexCoord3fvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord3fvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3iARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, int s, int t, int r) {
			if      (Delegates.pglMultiTexCoord3iARB != null)
				Delegates.pglMultiTexCoord3iARB(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
			LogProc("glMultiTexCoord3iARB({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3ivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3ivARB != null)
						Delegates.pglMultiTexCoord3ivARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord3ivARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3sARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, Int16 s, Int16 t, Int16 r) {
			if      (Delegates.pglMultiTexCoord3sARB != null)
				Delegates.pglMultiTexCoord3sARB(target, s, t, r);
			else
				throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
			LogProc("glMultiTexCoord3sARB({0}, {1}, {2}, {3})", target, s, t, r);
		}

		/// <summary>
		/// Binding for glMultiTexCoord3svARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord3ARB(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord3svARB != null)
						Delegates.pglMultiTexCoord3svARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord3ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord3svARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4dARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, double s, double t, double r, double q) {
			if      (Delegates.pglMultiTexCoord4dARB != null)
				Delegates.pglMultiTexCoord4dARB(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
			LogProc("glMultiTexCoord4dARB({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4dvARB != null)
						Delegates.pglMultiTexCoord4dvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord4dvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4fARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, float s, float t, float r, float q) {
			if      (Delegates.pglMultiTexCoord4fARB != null)
				Delegates.pglMultiTexCoord4fARB(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
			LogProc("glMultiTexCoord4fARB({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4fvARB != null)
						Delegates.pglMultiTexCoord4fvARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord4fvARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4iARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, int s, int t, int r, int q) {
			if      (Delegates.pglMultiTexCoord4iARB != null)
				Delegates.pglMultiTexCoord4iARB(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
			LogProc("glMultiTexCoord4iARB({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4ivARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4ivARB != null)
						Delegates.pglMultiTexCoord4ivARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord4ivARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4sARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="s">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="t">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="r">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="q">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, Int16 s, Int16 t, Int16 r, Int16 q) {
			if      (Delegates.pglMultiTexCoord4sARB != null)
				Delegates.pglMultiTexCoord4sARB(target, s, t, r, q);
			else
				throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
			LogProc("glMultiTexCoord4sARB({0}, {1}, {2}, {3}, {4})", target, s, t, r, q);
		}

		/// <summary>
		/// Binding for glMultiTexCoord4svARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultiTexCoord4ARB(int target, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglMultiTexCoord4svARB != null)
						Delegates.pglMultiTexCoord4svARB(target, fp_v);
					else
						throw new InvalidOperationException("binding point MultiTexCoord4ARB cannot be found");
				}
			}
			LogProc("glMultiTexCoord4svARB({0}, {1})", target, v);
		}

		/// <summary>
		/// Binding for glMultTransposeMatrixdARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultTransposeMatrixARB(double[] m) {
			unsafe {
				fixed (double* fp_m = m)
				{
					if      (Delegates.pglMultTransposeMatrixdARB != null)
						Delegates.pglMultTransposeMatrixdARB(fp_m);
					else
						throw new InvalidOperationException("binding point MultTransposeMatrixARB cannot be found");
				}
			}
			LogProc("glMultTransposeMatrixdARB({0})", m);
		}

		/// <summary>
		/// Binding for glMultTransposeMatrixdARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultTransposeMatrixARB(double* m) {
			unsafe {
				if      (Delegates.pglMultTransposeMatrixdARB != null)
					Delegates.pglMultTransposeMatrixdARB(m);
				else
					throw new InvalidOperationException("binding point MultTransposeMatrixARB cannot be found");
			}
			LogProc("glMultTransposeMatrixdARB({0})", "m");
		}
		

		/// <summary>
		/// Binding for glMultTransposeMatrixfARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultTransposeMatrixARB(float[] m) {
			unsafe {
				fixed (float* fp_m = m)
				{
					if      (Delegates.pglMultTransposeMatrixfARB != null)
						Delegates.pglMultTransposeMatrixfARB(fp_m);
					else
						throw new InvalidOperationException("binding point MultTransposeMatrixARB cannot be found");
				}
			}
			LogProc("glMultTransposeMatrixfARB({0})", m);
		}

		/// <summary>
		/// Binding for glMultTransposeMatrixfARB function.
		/// </summary>
		/// <param name="m">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void MultTransposeMatrixARB(float* m) {
			unsafe {
				if      (Delegates.pglMultTransposeMatrixfARB != null)
					Delegates.pglMultTransposeMatrixfARB(m);
				else
					throw new InvalidOperationException("binding point MultTransposeMatrixARB cannot be found");
			}
			LogProc("glMultTransposeMatrixfARB({0})", "m");
		}
		

		/// <summary>
		/// Binding for glNamedStringARB function.
		/// </summary>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="namelen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="name">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// <param name="stringlen">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.String"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void NamedStringARB(int type, int namelen, string name, int stringlen, string @string) {
			if      (Delegates.pglNamedStringARB != null)
				Delegates.pglNamedStringARB(type, namelen, name, stringlen, @string);
			else
				throw new InvalidOperationException("binding point NamedStringARB cannot be found");
			LogProc("glNamedStringARB({0}, {1}, {2}, {3}, {4})", type, namelen, name, stringlen, @string);
		}

		/// <summary>
		/// Binding for glPointParameterfARB function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="param">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PointParameterARB(int pname, float param) {
			if      (Delegates.pglPointParameterfARB != null)
				Delegates.pglPointParameterfARB(pname, param);
			else
				throw new InvalidOperationException("binding point PointParameterARB cannot be found");
			LogProc("glPointParameterfARB({0}, {1})", pname, param);
		}

		/// <summary>
		/// Binding for glPointParameterfvARB function.
		/// </summary>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void PointParameterARB(int pname, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglPointParameterfvARB != null)
						Delegates.pglPointParameterfvARB(pname, fp_params);
					else
						throw new InvalidOperationException("binding point PointParameterARB cannot be found");
				}
			}
			LogProc("glPointParameterfvARB({0}, {1})", pname, @params);
		}

		/// <summary>
		/// Binding for glProgramEnvParameter4dARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramEnvParameter4ARB(int target, UInt32 index, double x, double y, double z, double w) {
			if      (Delegates.pglProgramEnvParameter4dARB != null)
				Delegates.pglProgramEnvParameter4dARB(target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point ProgramEnvParameter4ARB cannot be found");
			LogProc("glProgramEnvParameter4dARB({0}, {1}, {2}, {3}, {4}, {5})", target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glProgramEnvParameter4dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramEnvParameter4ARB(int target, UInt32 index, double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglProgramEnvParameter4dvARB != null)
						Delegates.pglProgramEnvParameter4dvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point ProgramEnvParameter4ARB cannot be found");
				}
			}
			LogProc("glProgramEnvParameter4dvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glProgramEnvParameter4dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramEnvParameter4ARB(int target, UInt32 index, double* @params) {
			unsafe {
				if      (Delegates.pglProgramEnvParameter4dvARB != null)
					Delegates.pglProgramEnvParameter4dvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point ProgramEnvParameter4ARB cannot be found");
			}
			LogProc("glProgramEnvParameter4dvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glProgramEnvParameter4fARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramEnvParameter4ARB(int target, UInt32 index, float x, float y, float z, float w) {
			if      (Delegates.pglProgramEnvParameter4fARB != null)
				Delegates.pglProgramEnvParameter4fARB(target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point ProgramEnvParameter4ARB cannot be found");
			LogProc("glProgramEnvParameter4fARB({0}, {1}, {2}, {3}, {4}, {5})", target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glProgramEnvParameter4fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramEnvParameter4ARB(int target, UInt32 index, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglProgramEnvParameter4fvARB != null)
						Delegates.pglProgramEnvParameter4fvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point ProgramEnvParameter4ARB cannot be found");
				}
			}
			LogProc("glProgramEnvParameter4fvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glProgramEnvParameter4fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramEnvParameter4ARB(int target, UInt32 index, float* @params) {
			unsafe {
				if      (Delegates.pglProgramEnvParameter4fvARB != null)
					Delegates.pglProgramEnvParameter4fvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point ProgramEnvParameter4ARB cannot be found");
			}
			LogProc("glProgramEnvParameter4fvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glProgramLocalParameter4dARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramLocalParameter4ARB(int target, UInt32 index, double x, double y, double z, double w) {
			if      (Delegates.pglProgramLocalParameter4dARB != null)
				Delegates.pglProgramLocalParameter4dARB(target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point ProgramLocalParameter4ARB cannot be found");
			LogProc("glProgramLocalParameter4dARB({0}, {1}, {2}, {3}, {4}, {5})", target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glProgramLocalParameter4dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramLocalParameter4ARB(int target, UInt32 index, double[] @params) {
			unsafe {
				fixed (double* fp_params = @params)
				{
					if      (Delegates.pglProgramLocalParameter4dvARB != null)
						Delegates.pglProgramLocalParameter4dvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point ProgramLocalParameter4ARB cannot be found");
				}
			}
			LogProc("glProgramLocalParameter4dvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glProgramLocalParameter4dvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramLocalParameter4ARB(int target, UInt32 index, double* @params) {
			unsafe {
				if      (Delegates.pglProgramLocalParameter4dvARB != null)
					Delegates.pglProgramLocalParameter4dvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point ProgramLocalParameter4ARB cannot be found");
			}
			LogProc("glProgramLocalParameter4dvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glProgramLocalParameter4fARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramLocalParameter4ARB(int target, UInt32 index, float x, float y, float z, float w) {
			if      (Delegates.pglProgramLocalParameter4fARB != null)
				Delegates.pglProgramLocalParameter4fARB(target, index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point ProgramLocalParameter4ARB cannot be found");
			LogProc("glProgramLocalParameter4fARB({0}, {1}, {2}, {3}, {4}, {5})", target, index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glProgramLocalParameter4fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramLocalParameter4ARB(int target, UInt32 index, float[] @params) {
			unsafe {
				fixed (float* fp_params = @params)
				{
					if      (Delegates.pglProgramLocalParameter4fvARB != null)
						Delegates.pglProgramLocalParameter4fvARB(target, index, fp_params);
					else
						throw new InvalidOperationException("binding point ProgramLocalParameter4ARB cannot be found");
				}
			}
			LogProc("glProgramLocalParameter4fvARB({0}, {1}, {2})", target, index, @params);
		}

		/// <summary>
		/// Binding for glProgramLocalParameter4fvARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramLocalParameter4ARB(int target, UInt32 index, float* @params) {
			unsafe {
				if      (Delegates.pglProgramLocalParameter4fvARB != null)
					Delegates.pglProgramLocalParameter4fvARB(target, index, @params);
				else
					throw new InvalidOperationException("binding point ProgramLocalParameter4ARB cannot be found");
			}
			LogProc("glProgramLocalParameter4fvARB({0}, {1}, {2})", target, index, "@params");
		}
		

		/// <summary>
		/// Binding for glProgramParameteriARB function.
		/// </summary>
		/// <param name="program">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void ProgramParameterARB(UInt32 program, int pname, int value) {
			if      (Delegates.pglProgramParameteriARB != null)
				Delegates.pglProgramParameteriARB(program, pname, value);
			else
				throw new InvalidOperationException("binding point ProgramParameterARB cannot be found");
			LogProc("glProgramParameteriARB({0}, {1}, {2})", program, pname, value);
		}

		/// <summary>
		/// Binding for glProgramStringARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="len">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void ProgramStringARB(int target, int format, Int32 len, object @string) {
			GCHandle pp_string = GCHandle.Alloc(@string, GCHandleType.Pinned);
			try {
				if      (Delegates.pglProgramStringARB != null)
					Delegates.pglProgramStringARB(target, format, len, pp_string.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ProgramStringARB cannot be found");
			} finally {
				pp_string.Free();
			}
			LogProc("glProgramStringARB({0}, {1}, {2}, {3})", target, format, len, @string);
		}

		/// <summary>
		/// Binding for glReadnPixelsARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="width">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="height">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="format">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="bufSize">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:System.IntPtr"/>.
		/// This parameter holds data returned from function.
		/// </param>
		/// @note This routine is available from OpenGL 4.1
		public static void ReadnPixelsARB(int x, int y, Int32 width, Int32 height, int format, int type, Int32 bufSize, [Out] object data) {
			GCHandle pp_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				if      (Delegates.pglReadnPixelsARB != null)
					Delegates.pglReadnPixelsARB(x, y, width, height, format, type, bufSize, pp_data.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point ReadnPixelsARB cannot be found");
			} finally {
				pp_data.Free();
			}
			LogProc("glReadnPixelsARB({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", x, y, width, height, format, type, bufSize, data);
		}

		/// <summary>
		/// Binding for glSampleCoverageARB function.
		/// </summary>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="invert">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void SampleCoverageARB(float value, bool invert) {
			if      (Delegates.pglSampleCoverageARB != null)
				Delegates.pglSampleCoverageARB(value, invert);
			else
				throw new InvalidOperationException("binding point SampleCoverageARB cannot be found");
			LogProc("glSampleCoverageARB({0}, {1})", value, invert);
		}

		/// <summary>
		/// Binding for glShaderSourceARB function.
		/// </summary>
		/// <param name="shaderObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ShaderSourceARB(UInt32 shaderObj, Int32 count, string[] @string, int[] length) {
			unsafe {
				fixed (int* fp_length = length)
				{
					if      (Delegates.pglShaderSourceARB != null)
						Delegates.pglShaderSourceARB(shaderObj, count, @string, fp_length);
					else
						throw new InvalidOperationException("binding point ShaderSourceARB cannot be found");
				}
			}
			LogProc("glShaderSourceARB({0}, {1}, {2}, {3})", shaderObj, count, @string, length);
		}

		/// <summary>
		/// Binding for glShaderSourceARB function.
		/// </summary>
		/// <param name="shaderObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="string">
		/// A <see cref="T:System.String[]"/>.
		/// </param>
		/// <param name="length">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ShaderSourceARB(UInt32 shaderObj, Int32 count, string[] @string, int* length) {
			unsafe {
				if      (Delegates.pglShaderSourceARB != null)
					Delegates.pglShaderSourceARB(shaderObj, count, @string, length);
				else
					throw new InvalidOperationException("binding point ShaderSourceARB cannot be found");
			}
			LogProc("glShaderSourceARB({0}, {1}, {2}, {3})", shaderObj, count, @string, "length");
		}
		

		/// <summary>
		/// Binding for glTexBufferARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="internalformat">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 3.0
		public static void TexBufferARB(int target, int internalformat, UInt32 buffer) {
			if      (Delegates.pglTexBufferARB != null)
				Delegates.pglTexBufferARB(target, internalformat, buffer);
			else
				throw new InvalidOperationException("binding point TexBufferARB cannot be found");
			LogProc("glTexBufferARB({0}, {1}, {2})", target, internalformat, buffer);
		}

		/// <summary>
		/// Binding for glUniform1fARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1ARB(int location, float v0) {
			if      (Delegates.pglUniform1fARB != null)
				Delegates.pglUniform1fARB(location, v0);
			else
				throw new InvalidOperationException("binding point Uniform1ARB cannot be found");
			LogProc("glUniform1fARB({0}, {1})", location, v0);
		}

		/// <summary>
		/// Binding for glUniform1fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1ARB(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform1fvARB != null)
						Delegates.pglUniform1fvARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform1ARB cannot be found");
				}
			}
			LogProc("glUniform1fvARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform1fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1ARB(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform1fvARB != null)
					Delegates.pglUniform1fvARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform1ARB cannot be found");
			}
			LogProc("glUniform1fvARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform1iARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1ARB(int location, int v0) {
			if      (Delegates.pglUniform1iARB != null)
				Delegates.pglUniform1iARB(location, v0);
			else
				throw new InvalidOperationException("binding point Uniform1ARB cannot be found");
			LogProc("glUniform1iARB({0}, {1})", location, v0);
		}

		/// <summary>
		/// Binding for glUniform1ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1ARB(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform1ivARB != null)
						Delegates.pglUniform1ivARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform1ARB cannot be found");
				}
			}
			LogProc("glUniform1ivARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform1ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform1ARB(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform1ivARB != null)
					Delegates.pglUniform1ivARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform1ARB cannot be found");
			}
			LogProc("glUniform1ivARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform2fARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2ARB(int location, float v0, float v1) {
			if      (Delegates.pglUniform2fARB != null)
				Delegates.pglUniform2fARB(location, v0, v1);
			else
				throw new InvalidOperationException("binding point Uniform2ARB cannot be found");
			LogProc("glUniform2fARB({0}, {1}, {2})", location, v0, v1);
		}

		/// <summary>
		/// Binding for glUniform2fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2ARB(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform2fvARB != null)
						Delegates.pglUniform2fvARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform2ARB cannot be found");
				}
			}
			LogProc("glUniform2fvARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform2fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2ARB(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform2fvARB != null)
					Delegates.pglUniform2fvARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform2ARB cannot be found");
			}
			LogProc("glUniform2fvARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform2iARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2ARB(int location, int v0, int v1) {
			if      (Delegates.pglUniform2iARB != null)
				Delegates.pglUniform2iARB(location, v0, v1);
			else
				throw new InvalidOperationException("binding point Uniform2ARB cannot be found");
			LogProc("glUniform2iARB({0}, {1}, {2})", location, v0, v1);
		}

		/// <summary>
		/// Binding for glUniform2ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2ARB(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform2ivARB != null)
						Delegates.pglUniform2ivARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform2ARB cannot be found");
				}
			}
			LogProc("glUniform2ivARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform2ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform2ARB(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform2ivARB != null)
					Delegates.pglUniform2ivARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform2ARB cannot be found");
			}
			LogProc("glUniform2ivARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform3fARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3ARB(int location, float v0, float v1, float v2) {
			if      (Delegates.pglUniform3fARB != null)
				Delegates.pglUniform3fARB(location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point Uniform3ARB cannot be found");
			LogProc("glUniform3fARB({0}, {1}, {2}, {3})", location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glUniform3fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3ARB(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform3fvARB != null)
						Delegates.pglUniform3fvARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform3ARB cannot be found");
				}
			}
			LogProc("glUniform3fvARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform3fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3ARB(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform3fvARB != null)
					Delegates.pglUniform3fvARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform3ARB cannot be found");
			}
			LogProc("glUniform3fvARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform3iARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3ARB(int location, int v0, int v1, int v2) {
			if      (Delegates.pglUniform3iARB != null)
				Delegates.pglUniform3iARB(location, v0, v1, v2);
			else
				throw new InvalidOperationException("binding point Uniform3ARB cannot be found");
			LogProc("glUniform3iARB({0}, {1}, {2}, {3})", location, v0, v1, v2);
		}

		/// <summary>
		/// Binding for glUniform3ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3ARB(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform3ivARB != null)
						Delegates.pglUniform3ivARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform3ARB cannot be found");
				}
			}
			LogProc("glUniform3ivARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform3ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform3ARB(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform3ivARB != null)
					Delegates.pglUniform3ivARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform3ARB cannot be found");
			}
			LogProc("glUniform3ivARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform4fARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4ARB(int location, float v0, float v1, float v2, float v3) {
			if      (Delegates.pglUniform4fARB != null)
				Delegates.pglUniform4fARB(location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point Uniform4ARB cannot be found");
			LogProc("glUniform4fARB({0}, {1}, {2}, {3}, {4})", location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glUniform4fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4ARB(int location, Int32 count, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniform4fvARB != null)
						Delegates.pglUniform4fvARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform4ARB cannot be found");
				}
			}
			LogProc("glUniform4fvARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform4fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4ARB(int location, Int32 count, float* value) {
			unsafe {
				if      (Delegates.pglUniform4fvARB != null)
					Delegates.pglUniform4fvARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform4ARB cannot be found");
			}
			LogProc("glUniform4fvARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniform4iARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v0">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v1">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v2">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="v3">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4ARB(int location, int v0, int v1, int v2, int v3) {
			if      (Delegates.pglUniform4iARB != null)
				Delegates.pglUniform4iARB(location, v0, v1, v2, v3);
			else
				throw new InvalidOperationException("binding point Uniform4ARB cannot be found");
			LogProc("glUniform4iARB({0}, {1}, {2}, {3}, {4})", location, v0, v1, v2, v3);
		}

		/// <summary>
		/// Binding for glUniform4ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4ARB(int location, Int32 count, int[] value) {
			unsafe {
				fixed (int* fp_value = value)
				{
					if      (Delegates.pglUniform4ivARB != null)
						Delegates.pglUniform4ivARB(location, count, fp_value);
					else
						throw new InvalidOperationException("binding point Uniform4ARB cannot be found");
				}
			}
			LogProc("glUniform4ivARB({0}, {1}, {2})", location, count, value);
		}

		/// <summary>
		/// Binding for glUniform4ivARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void Uniform4ARB(int location, Int32 count, int* value) {
			unsafe {
				if      (Delegates.pglUniform4ivARB != null)
					Delegates.pglUniform4ivARB(location, count, value);
				else
					throw new InvalidOperationException("binding point Uniform4ARB cannot be found");
			}
			LogProc("glUniform4ivARB({0}, {1}, {2})", location, count, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix2fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2ARB(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix2fvARB != null)
						Delegates.pglUniformMatrix2fvARB(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix2ARB cannot be found");
				}
			}
			LogProc("glUniformMatrix2fvARB({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix2fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix2ARB(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix2fvARB != null)
					Delegates.pglUniformMatrix2fvARB(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix2ARB cannot be found");
			}
			LogProc("glUniformMatrix2fvARB({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix3fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3ARB(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix3fvARB != null)
						Delegates.pglUniformMatrix3fvARB(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix3ARB cannot be found");
				}
			}
			LogProc("glUniformMatrix3fvARB({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix3fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix3ARB(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix3fvARB != null)
					Delegates.pglUniformMatrix3fvARB(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix3ARB cannot be found");
			}
			LogProc("glUniformMatrix3fvARB({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUniformMatrix4fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4ARB(int location, Int32 count, bool transpose, float[] value) {
			unsafe {
				fixed (float* fp_value = value)
				{
					if      (Delegates.pglUniformMatrix4fvARB != null)
						Delegates.pglUniformMatrix4fvARB(location, count, transpose, fp_value);
					else
						throw new InvalidOperationException("binding point UniformMatrix4ARB cannot be found");
				}
			}
			LogProc("glUniformMatrix4fvARB({0}, {1}, {2}, {3})", location, count, transpose, value);
		}

		/// <summary>
		/// Binding for glUniformMatrix4fvARB function.
		/// </summary>
		/// <param name="location">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="transpose">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="value">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UniformMatrix4ARB(int location, Int32 count, bool transpose, float* value) {
			unsafe {
				if      (Delegates.pglUniformMatrix4fvARB != null)
					Delegates.pglUniformMatrix4fvARB(location, count, transpose, value);
				else
					throw new InvalidOperationException("binding point UniformMatrix4ARB cannot be found");
			}
			LogProc("glUniformMatrix4fvARB({0}, {1}, {2}, {3})", location, count, transpose, "value");
		}
		

		/// <summary>
		/// Binding for glUnmapBufferARB function.
		/// </summary>
		/// <param name="target">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static bool UnmapBufferARB(int target) {
			bool retvalue;
			if      (Delegates.pglUnmapBufferARB != null)
				retvalue = (Delegates.pglUnmapBufferARB(target));
			else
				throw new InvalidOperationException("binding point UnmapBufferARB cannot be found");
			LogProc("glUnmapBufferARB({0}) = {1}", target, retvalue);
			return (retvalue);
		}

		/// <summary>
		/// Binding for glUseProgramObjectARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void UseProgramObjectARB(UInt32 programObj) {
			if      (Delegates.pglUseProgramObjectARB != null)
				Delegates.pglUseProgramObjectARB(programObj);
			else
				throw new InvalidOperationException("binding point UseProgramObjectARB cannot be found");
			LogProc("glUseProgramObjectARB({0})", programObj);
		}

		/// <summary>
		/// Binding for glValidateProgramARB function.
		/// </summary>
		/// <param name="programObj">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.2
		public static void ValidateProgramARB(UInt32 programObj) {
			if      (Delegates.pglValidateProgramARB != null)
				Delegates.pglValidateProgramARB(programObj);
			else
				throw new InvalidOperationException("binding point ValidateProgramARB cannot be found");
			LogProc("glValidateProgramARB({0})", programObj);
		}

		/// <summary>
		/// Binding for glVertexAttrib1dARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, double x) {
			if      (Delegates.pglVertexAttrib1dARB != null)
				Delegates.pglVertexAttrib1dARB(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
			LogProc("glVertexAttrib1dARB({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttrib1dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib1dvARB != null)
						Delegates.pglVertexAttrib1dvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib1dvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib1dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib1dvARB != null)
					Delegates.pglVertexAttrib1dvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
			}
			LogProc("glVertexAttrib1dvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib1fARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, float x) {
			if      (Delegates.pglVertexAttrib1fARB != null)
				Delegates.pglVertexAttrib1fARB(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
			LogProc("glVertexAttrib1fARB({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttrib1fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib1fvARB != null)
						Delegates.pglVertexAttrib1fvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib1fvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib1fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib1fvARB != null)
					Delegates.pglVertexAttrib1fvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
			}
			LogProc("glVertexAttrib1fvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib1sARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, Int16 x) {
			if      (Delegates.pglVertexAttrib1sARB != null)
				Delegates.pglVertexAttrib1sARB(index, x);
			else
				throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
			LogProc("glVertexAttrib1sARB({0}, {1})", index, x);
		}

		/// <summary>
		/// Binding for glVertexAttrib1svARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib1ARB(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib1svARB != null)
						Delegates.pglVertexAttrib1svARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib1ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib1svARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib2dARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, double x, double y) {
			if      (Delegates.pglVertexAttrib2dARB != null)
				Delegates.pglVertexAttrib2dARB(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
			LogProc("glVertexAttrib2dARB({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttrib2dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib2dvARB != null)
						Delegates.pglVertexAttrib2dvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib2dvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib2dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib2dvARB != null)
					Delegates.pglVertexAttrib2dvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
			}
			LogProc("glVertexAttrib2dvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib2fARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, float x, float y) {
			if      (Delegates.pglVertexAttrib2fARB != null)
				Delegates.pglVertexAttrib2fARB(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
			LogProc("glVertexAttrib2fARB({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttrib2fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib2fvARB != null)
						Delegates.pglVertexAttrib2fvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib2fvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib2fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib2fvARB != null)
					Delegates.pglVertexAttrib2fvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
			}
			LogProc("glVertexAttrib2fvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib2sARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, Int16 x, Int16 y) {
			if      (Delegates.pglVertexAttrib2sARB != null)
				Delegates.pglVertexAttrib2sARB(index, x, y);
			else
				throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
			LogProc("glVertexAttrib2sARB({0}, {1}, {2})", index, x, y);
		}

		/// <summary>
		/// Binding for glVertexAttrib2svARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib2ARB(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib2svARB != null)
						Delegates.pglVertexAttrib2svARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib2ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib2svARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib3dARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, double x, double y, double z) {
			if      (Delegates.pglVertexAttrib3dARB != null)
				Delegates.pglVertexAttrib3dARB(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
			LogProc("glVertexAttrib3dARB({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttrib3dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib3dvARB != null)
						Delegates.pglVertexAttrib3dvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib3dvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib3dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib3dvARB != null)
					Delegates.pglVertexAttrib3dvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
			}
			LogProc("glVertexAttrib3dvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib3fARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, float x, float y, float z) {
			if      (Delegates.pglVertexAttrib3fARB != null)
				Delegates.pglVertexAttrib3fARB(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
			LogProc("glVertexAttrib3fARB({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttrib3fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib3fvARB != null)
						Delegates.pglVertexAttrib3fvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib3fvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib3fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib3fvARB != null)
					Delegates.pglVertexAttrib3fvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
			}
			LogProc("glVertexAttrib3fvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib3sARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, Int16 x, Int16 y, Int16 z) {
			if      (Delegates.pglVertexAttrib3sARB != null)
				Delegates.pglVertexAttrib3sARB(index, x, y, z);
			else
				throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
			LogProc("glVertexAttrib3sARB({0}, {1}, {2}, {3})", index, x, y, z);
		}

		/// <summary>
		/// Binding for glVertexAttrib3svARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib3ARB(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib3svARB != null)
						Delegates.pglVertexAttrib3svARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib3ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib3svARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4bvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4bvARB != null)
						Delegates.pglVertexAttrib4bvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4bvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4dARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, double x, double y, double z, double w) {
			if      (Delegates.pglVertexAttrib4dARB != null)
				Delegates.pglVertexAttrib4dARB(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
			LogProc("glVertexAttrib4dARB({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4dvARB != null)
						Delegates.pglVertexAttrib4dvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4dvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4dvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, double* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4dvARB != null)
					Delegates.pglVertexAttrib4dvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
			}
			LogProc("glVertexAttrib4dvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4fARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, float x, float y, float z, float w) {
			if      (Delegates.pglVertexAttrib4fARB != null)
				Delegates.pglVertexAttrib4fARB(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
			LogProc("glVertexAttrib4fARB({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4fvARB != null)
						Delegates.pglVertexAttrib4fvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4fvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4fvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, float* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4fvARB != null)
					Delegates.pglVertexAttrib4fvARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
			}
			LogProc("glVertexAttrib4fvARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4ivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4ivARB != null)
						Delegates.pglVertexAttrib4ivARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4ivARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4ivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4ivARB != null)
					Delegates.pglVertexAttrib4ivARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
			}
			LogProc("glVertexAttrib4ivARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4NbvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, sbyte[] v) {
			unsafe {
				fixed (sbyte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4NbvARB != null)
						Delegates.pglVertexAttrib4NbvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4NbvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4NivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4NivARB != null)
						Delegates.pglVertexAttrib4NivARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4NivARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4NivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, int* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4NivARB != null)
					Delegates.pglVertexAttrib4NivARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
			}
			LogProc("glVertexAttrib4NivARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4NsvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4NsvARB != null)
						Delegates.pglVertexAttrib4NsvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4NsvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4NubARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Byte"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, byte x, byte y, byte z, byte w) {
			if      (Delegates.pglVertexAttrib4NubARB != null)
				Delegates.pglVertexAttrib4NubARB(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
			LogProc("glVertexAttrib4NubARB({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4NubvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4NubvARB != null)
						Delegates.pglVertexAttrib4NubvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4NubvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4NuivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4NuivARB != null)
						Delegates.pglVertexAttrib4NuivARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4NuivARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4NuivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4NuivARB != null)
					Delegates.pglVertexAttrib4NuivARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
			}
			LogProc("glVertexAttrib4NuivARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4NusvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4NARB(UInt32 index, UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4NusvARB != null)
						Delegates.pglVertexAttrib4NusvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4NARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4NusvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4sARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="w">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, Int16 x, Int16 y, Int16 z, Int16 w) {
			if      (Delegates.pglVertexAttrib4sARB != null)
				Delegates.pglVertexAttrib4sARB(index, x, y, z, w);
			else
				throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
			LogProc("glVertexAttrib4sARB({0}, {1}, {2}, {3}, {4})", index, x, y, z, w);
		}

		/// <summary>
		/// Binding for glVertexAttrib4svARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4svARB != null)
						Delegates.pglVertexAttrib4svARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4svARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4ubvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ubARB(UInt32 index, byte[] v) {
			unsafe {
				fixed (byte* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4ubvARB != null)
						Delegates.pglVertexAttrib4ubvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ubARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4ubvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4uivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, UInt32[] v) {
			unsafe {
				fixed (UInt32* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4uivARB != null)
						Delegates.pglVertexAttrib4uivARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4uivARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttrib4uivARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, UInt32* v) {
			unsafe {
				if      (Delegates.pglVertexAttrib4uivARB != null)
					Delegates.pglVertexAttrib4uivARB(index, v);
				else
					throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
			}
			LogProc("glVertexAttrib4uivARB({0}, {1})", index, "v");
		}
		

		/// <summary>
		/// Binding for glVertexAttrib4usvARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttrib4ARB(UInt32 index, UInt16[] v) {
			unsafe {
				fixed (UInt16* fp_v = v)
				{
					if      (Delegates.pglVertexAttrib4usvARB != null)
						Delegates.pglVertexAttrib4usvARB(index, fp_v);
					else
						throw new InvalidOperationException("binding point VertexAttrib4ARB cannot be found");
				}
			}
			LogProc("glVertexAttrib4usvARB({0}, {1})", index, v);
		}

		/// <summary>
		/// Binding for glVertexAttribDivisorARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="divisor">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 2.0
		public static void VertexAttribDivisorARB(UInt32 index, UInt32 divisor) {
			if      (Delegates.pglVertexAttribDivisorARB != null)
				Delegates.pglVertexAttribDivisorARB(index, divisor);
			else
				throw new InvalidOperationException("binding point VertexAttribDivisorARB cannot be found");
			LogProc("glVertexAttribDivisorARB({0}, {1})", index, divisor);
		}

		/// <summary>
		/// Binding for glVertexAttribPointerARB function.
		/// </summary>
		/// <param name="index">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="normalized">
		/// A <see cref="T:System.Boolean"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.3
		public static void VertexAttribPointerARB(UInt32 index, int size, int type, bool normalized, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglVertexAttribPointerARB != null)
					Delegates.pglVertexAttribPointerARB(index, size, type, normalized, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point VertexAttribPointerARB cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glVertexAttribPointerARB({0}, {1}, {2}, {3}, {4}, {5})", index, size, type, normalized, stride, pointer);
		}

		/// <summary>
		/// Binding for glVertexBlendARB function.
		/// </summary>
		/// <param name="count">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void VertexBlendARB(int count) {
			if      (Delegates.pglVertexBlendARB != null)
				Delegates.pglVertexBlendARB(count);
			else
				throw new InvalidOperationException("binding point VertexBlendARB cannot be found");
			LogProc("glVertexBlendARB({0})", count);
		}

		/// <summary>
		/// Binding for glWeightbvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.SByte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, sbyte[] weights) {
			unsafe {
				fixed (sbyte* fp_weights = weights)
				{
					if      (Delegates.pglWeightbvARB != null)
						Delegates.pglWeightbvARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightbvARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWeightdvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, double[] weights) {
			unsafe {
				fixed (double* fp_weights = weights)
				{
					if      (Delegates.pglWeightdvARB != null)
						Delegates.pglWeightdvARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightdvARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWeightdvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, double* weights) {
			unsafe {
				if      (Delegates.pglWeightdvARB != null)
					Delegates.pglWeightdvARB(size, weights);
				else
					throw new InvalidOperationException("binding point WeightARB cannot be found");
			}
			LogProc("glWeightdvARB({0}, {1})", size, "weights");
		}
		

		/// <summary>
		/// Binding for glWeightfvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, float[] weights) {
			unsafe {
				fixed (float* fp_weights = weights)
				{
					if      (Delegates.pglWeightfvARB != null)
						Delegates.pglWeightfvARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightfvARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWeightfvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, float* weights) {
			unsafe {
				if      (Delegates.pglWeightfvARB != null)
					Delegates.pglWeightfvARB(size, weights);
				else
					throw new InvalidOperationException("binding point WeightARB cannot be found");
			}
			LogProc("glWeightfvARB({0}, {1})", size, "weights");
		}
		

		/// <summary>
		/// Binding for glWeightivARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, int[] weights) {
			unsafe {
				fixed (int* fp_weights = weights)
				{
					if      (Delegates.pglWeightivARB != null)
						Delegates.pglWeightivARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightivARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWeightivARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, int* weights) {
			unsafe {
				if      (Delegates.pglWeightivARB != null)
					Delegates.pglWeightivARB(size, weights);
				else
					throw new InvalidOperationException("binding point WeightARB cannot be found");
			}
			LogProc("glWeightivARB({0}, {1})", size, "weights");
		}
		

		/// <summary>
		/// Binding for glWeightPointerARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="type">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="stride">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="pointer">
		/// A <see cref="T:System.IntPtr"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightPointerARB(int size, int type, Int32 stride, object pointer) {
			GCHandle pp_pointer = GCHandle.Alloc(pointer, GCHandleType.Pinned);
			try {
				if      (Delegates.pglWeightPointerARB != null)
					Delegates.pglWeightPointerARB(size, type, stride, pp_pointer.AddrOfPinnedObject());
				else
					throw new InvalidOperationException("binding point WeightPointerARB cannot be found");
			} finally {
				pp_pointer.Free();
			}
			LogProc("glWeightPointerARB({0}, {1}, {2}, {3})", size, type, stride, pointer);
		}

		/// <summary>
		/// Binding for glWeightsvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, Int16[] weights) {
			unsafe {
				fixed (Int16* fp_weights = weights)
				{
					if      (Delegates.pglWeightsvARB != null)
						Delegates.pglWeightsvARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightsvARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWeightubvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.Byte*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, byte[] weights) {
			unsafe {
				fixed (byte* fp_weights = weights)
				{
					if      (Delegates.pglWeightubvARB != null)
						Delegates.pglWeightubvARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightubvARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWeightuivARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.UInt32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, UInt32[] weights) {
			unsafe {
				fixed (UInt32* fp_weights = weights)
				{
					if      (Delegates.pglWeightuivARB != null)
						Delegates.pglWeightuivARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightuivARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWeightuivARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.UInt32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, UInt32* weights) {
			unsafe {
				if      (Delegates.pglWeightuivARB != null)
					Delegates.pglWeightuivARB(size, weights);
				else
					throw new InvalidOperationException("binding point WeightARB cannot be found");
			}
			LogProc("glWeightuivARB({0}, {1})", size, "weights");
		}
		

		/// <summary>
		/// Binding for glWeightusvARB function.
		/// </summary>
		/// <param name="size">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="weights">
		/// A <see cref="T:System.UInt16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.1
		public static void WeightARB(int size, UInt16[] weights) {
			unsafe {
				fixed (UInt16* fp_weights = weights)
				{
					if      (Delegates.pglWeightusvARB != null)
						Delegates.pglWeightusvARB(size, fp_weights);
					else
						throw new InvalidOperationException("binding point WeightARB cannot be found");
				}
			}
			LogProc("glWeightusvARB({0}, {1})", size, weights);
		}

		/// <summary>
		/// Binding for glWindowPos2dARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(double x, double y) {
			if      (Delegates.pglWindowPos2dARB != null)
				Delegates.pglWindowPos2dARB(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
			LogProc("glWindowPos2dARB({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2dvARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglWindowPos2dvARB != null)
						Delegates.pglWindowPos2dvARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
				}
			}
			LogProc("glWindowPos2dvARB({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos2fARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(float x, float y) {
			if      (Delegates.pglWindowPos2fARB != null)
				Delegates.pglWindowPos2fARB(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
			LogProc("glWindowPos2fARB({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2fvARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglWindowPos2fvARB != null)
						Delegates.pglWindowPos2fvARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
				}
			}
			LogProc("glWindowPos2fvARB({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos2iARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(int x, int y) {
			if      (Delegates.pglWindowPos2iARB != null)
				Delegates.pglWindowPos2iARB(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
			LogProc("glWindowPos2iARB({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2ivARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglWindowPos2ivARB != null)
						Delegates.pglWindowPos2ivARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
				}
			}
			LogProc("glWindowPos2ivARB({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos2sARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(Int16 x, Int16 y) {
			if      (Delegates.pglWindowPos2sARB != null)
				Delegates.pglWindowPos2sARB(x, y);
			else
				throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
			LogProc("glWindowPos2sARB({0}, {1})", x, y);
		}

		/// <summary>
		/// Binding for glWindowPos2svARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos2ARB(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglWindowPos2svARB != null)
						Delegates.pglWindowPos2svARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos2ARB cannot be found");
				}
			}
			LogProc("glWindowPos2svARB({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3dARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Double"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(double x, double y, double z) {
			if      (Delegates.pglWindowPos3dARB != null)
				Delegates.pglWindowPos3dARB(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
			LogProc("glWindowPos3dARB({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3dvARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Double*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(double[] v) {
			unsafe {
				fixed (double* fp_v = v)
				{
					if      (Delegates.pglWindowPos3dvARB != null)
						Delegates.pglWindowPos3dvARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
				}
			}
			LogProc("glWindowPos3dvARB({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3fARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Single"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(float x, float y, float z) {
			if      (Delegates.pglWindowPos3fARB != null)
				Delegates.pglWindowPos3fARB(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
			LogProc("glWindowPos3fARB({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3fvARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Single*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(float[] v) {
			unsafe {
				fixed (float* fp_v = v)
				{
					if      (Delegates.pglWindowPos3fvARB != null)
						Delegates.pglWindowPos3fvARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
				}
			}
			LogProc("glWindowPos3fvARB({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3iARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int32"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(int x, int y, int z) {
			if      (Delegates.pglWindowPos3iARB != null)
				Delegates.pglWindowPos3iARB(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
			LogProc("glWindowPos3iARB({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3ivARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int32*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(int[] v) {
			unsafe {
				fixed (int* fp_v = v)
				{
					if      (Delegates.pglWindowPos3ivARB != null)
						Delegates.pglWindowPos3ivARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
				}
			}
			LogProc("glWindowPos3ivARB({0})", v);
		}

		/// <summary>
		/// Binding for glWindowPos3sARB function.
		/// </summary>
		/// <param name="x">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="y">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// <param name="z">
		/// A <see cref="T:System.Int16"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(Int16 x, Int16 y, Int16 z) {
			if      (Delegates.pglWindowPos3sARB != null)
				Delegates.pglWindowPos3sARB(x, y, z);
			else
				throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
			LogProc("glWindowPos3sARB({0}, {1}, {2})", x, y, z);
		}

		/// <summary>
		/// Binding for glWindowPos3svARB function.
		/// </summary>
		/// <param name="v">
		/// A <see cref="T:System.Int16*"/>.
		/// </param>
		/// @note This routine is available from OpenGL 1.0
		public static void WindowPos3ARB(Int16[] v) {
			unsafe {
				fixed (Int16* fp_v = v)
				{
					if      (Delegates.pglWindowPos3svARB != null)
						Delegates.pglWindowPos3svARB(fp_v);
					else
						throw new InvalidOperationException("binding point WindowPos3ARB cannot be found");
				}
			}
			LogProc("glWindowPos3svARB({0})", v);
		}

		internal static partial class Delegates
		{
			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glActiveTextureARB(int texture);
			[ThreadStatic]
			internal static glActiveTextureARB pglActiveTextureARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glAttachObjectARB(UInt32 containerObj, UInt32 obj);
			[ThreadStatic]
			internal static glAttachObjectARB pglAttachObjectARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBeginQueryARB(int target, UInt32 id);
			[ThreadStatic]
			internal static glBeginQueryARB pglBeginQueryARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindAttribLocationARB(UInt32 programObj, UInt32 index, string name);
			[ThreadStatic]
			internal static glBindAttribLocationARB pglBindAttribLocationARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindBufferARB(int target, UInt32 buffer);
			[ThreadStatic]
			internal static glBindBufferARB pglBindBufferARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBindProgramARB(int target, UInt32 program);
			[ThreadStatic]
			internal static glBindProgramARB pglBindProgramARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquationiARB(UInt32 buf, int mode);
			[ThreadStatic]
			internal static glBlendEquationiARB pglBlendEquationiARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendEquationSeparateiARB(UInt32 buf, int modeRGB, int modeAlpha);
			[ThreadStatic]
			internal static glBlendEquationSeparateiARB pglBlendEquationSeparateiARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendFunciARB(UInt32 buf, int src, int dst);
			[ThreadStatic]
			internal static glBlendFunciARB pglBlendFunciARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBlendFuncSeparateiARB(UInt32 buf, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha);
			[ThreadStatic]
			internal static glBlendFuncSeparateiARB pglBlendFuncSeparateiARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBufferDataARB(int target, IntPtr size, IntPtr data, int usage);
			[ThreadStatic]
			internal static glBufferDataARB pglBufferDataARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glBufferSubDataARB(int target, IntPtr offset, IntPtr size, IntPtr data);
			[ThreadStatic]
			internal static glBufferSubDataARB pglBufferSubDataARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClampColorARB(int target, int clamp);
			[ThreadStatic]
			internal static glClampColorARB pglClampColorARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glClientActiveTextureARB(int texture);
			[ThreadStatic]
			internal static glClientActiveTextureARB pglClientActiveTextureARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompileShaderARB(UInt32 shaderObj);
			[ThreadStatic]
			internal static glCompileShaderARB pglCompileShaderARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glCompileShaderIncludeARB(UInt32 shader, Int32 count, string[] path, int* length);
			[ThreadStatic]
			internal static glCompileShaderIncludeARB pglCompileShaderIncludeARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexImage1DARB(int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexImage1DARB pglCompressedTexImage1DARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexImage2DARB(int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexImage2DARB pglCompressedTexImage2DARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexImage3DARB(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexImage3DARB pglCompressedTexImage3DARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexSubImage1DARB(int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexSubImage1DARB pglCompressedTexSubImage1DARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexSubImage2DARB(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexSubImage2DARB pglCompressedTexSubImage2DARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCompressedTexSubImage3DARB(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr data);
			[ThreadStatic]
			internal static glCompressedTexSubImage3DARB pglCompressedTexSubImage3DARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glCreateProgramObjectARB();
			[ThreadStatic]
			internal static glCreateProgramObjectARB pglCreateProgramObjectARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glCreateShaderObjectARB(int shaderType);
			[ThreadStatic]
			internal static glCreateShaderObjectARB pglCreateShaderObjectARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glCreateSyncFromCLeventARB(IntPtr context, IntPtr @event, uint flags);
			[ThreadStatic]
			internal static glCreateSyncFromCLeventARB pglCreateSyncFromCLeventARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glCurrentPaletteMatrixARB(int index);
			[ThreadStatic]
			internal static glCurrentPaletteMatrixARB pglCurrentPaletteMatrixARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDebugMessageCallbackARB(IntPtr callback, IntPtr userParam);
			[ThreadStatic]
			internal static glDebugMessageCallbackARB pglDebugMessageCallbackARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDebugMessageControlARB(int source, int type, int severity, Int32 count, UInt32* ids, bool enabled);
			[ThreadStatic]
			internal static glDebugMessageControlARB pglDebugMessageControlARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDebugMessageInsertARB(int source, int type, UInt32 id, int severity, Int32 length, string buf);
			[ThreadStatic]
			internal static glDebugMessageInsertARB pglDebugMessageInsertARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteBuffersARB(Int32 n, UInt32* buffers);
			[ThreadStatic]
			internal static glDeleteBuffersARB pglDeleteBuffersARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDeleteNamedStringARB(int namelen, string name);
			[ThreadStatic]
			internal static glDeleteNamedStringARB pglDeleteNamedStringARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDeleteObjectARB(UInt32 obj);
			[ThreadStatic]
			internal static glDeleteObjectARB pglDeleteObjectARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteProgramsARB(Int32 n, UInt32* programs);
			[ThreadStatic]
			internal static glDeleteProgramsARB pglDeleteProgramsARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDeleteQueriesARB(Int32 n, UInt32* ids);
			[ThreadStatic]
			internal static glDeleteQueriesARB pglDeleteQueriesARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDetachObjectARB(UInt32 containerObj, UInt32 attachedObj);
			[ThreadStatic]
			internal static glDetachObjectARB pglDetachObjectARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDisableVertexAttribArrayARB(UInt32 index);
			[ThreadStatic]
			internal static glDisableVertexAttribArrayARB pglDisableVertexAttribArrayARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawArraysInstancedARB(int mode, int first, Int32 count, Int32 primcount);
			[ThreadStatic]
			internal static glDrawArraysInstancedARB pglDrawArraysInstancedARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glDrawBuffersARB(Int32 n, int* bufs);
			[ThreadStatic]
			internal static glDrawBuffersARB pglDrawBuffersARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glDrawElementsInstancedARB(int mode, Int32 count, int type, IntPtr indices, Int32 primcount);
			[ThreadStatic]
			internal static glDrawElementsInstancedARB pglDrawElementsInstancedARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEnableVertexAttribArrayARB(UInt32 index);
			[ThreadStatic]
			internal static glEnableVertexAttribArrayARB pglEnableVertexAttribArrayARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glEndQueryARB(int target);
			[ThreadStatic]
			internal static glEndQueryARB pglEndQueryARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTextureARB(int target, int attachment, UInt32 texture, int level);
			[ThreadStatic]
			internal static glFramebufferTextureARB pglFramebufferTextureARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTextureFaceARB(int target, int attachment, UInt32 texture, int level, int face);
			[ThreadStatic]
			internal static glFramebufferTextureFaceARB pglFramebufferTextureFaceARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glFramebufferTextureLayerARB(int target, int attachment, UInt32 texture, int level, int layer);
			[ThreadStatic]
			internal static glFramebufferTextureLayerARB pglFramebufferTextureLayerARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenBuffersARB(Int32 n, [Out] UInt32* buffers);
			[ThreadStatic]
			internal static glGenBuffersARB pglGenBuffersARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenProgramsARB(Int32 n, [Out] UInt32* programs);
			[ThreadStatic]
			internal static glGenProgramsARB pglGenProgramsARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGenQueriesARB(Int32 n, [Out] UInt32* ids);
			[ThreadStatic]
			internal static glGenQueriesARB pglGenQueriesARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveAttribARB(UInt32 programObj, UInt32 index, Int32 maxLength, [Out] Int32* length, [Out] int* size, [Out] int* type, [Out] StringBuilder name);
			[ThreadStatic]
			internal static glGetActiveAttribARB pglGetActiveAttribARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetActiveUniformARB(UInt32 programObj, UInt32 index, Int32 maxLength, [Out] Int32* length, [Out] int* size, [Out] int* type, [Out] StringBuilder name);
			[ThreadStatic]
			internal static glGetActiveUniformARB pglGetActiveUniformARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetAttachedObjectsARB(UInt32 containerObj, Int32 maxCount, [Out] Int32* count, [Out] UInt32* obj);
			[ThreadStatic]
			internal static glGetAttachedObjectsARB pglGetAttachedObjectsARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetAttribLocationARB(UInt32 programObj, string name);
			[ThreadStatic]
			internal static glGetAttribLocationARB pglGetAttribLocationARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBufferParameterivARB(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetBufferParameterivARB pglGetBufferParameterivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetBufferPointervARB(int target, int pname, [Out] IntPtr* @params);
			[ThreadStatic]
			internal static glGetBufferPointervARB pglGetBufferPointervARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetBufferSubDataARB(int target, IntPtr offset, IntPtr size, [Out] IntPtr data);
			[ThreadStatic]
			internal static glGetBufferSubDataARB pglGetBufferSubDataARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetCompressedTexImageARB(int target, int level, [Out] IntPtr img);
			[ThreadStatic]
			internal static glGetCompressedTexImageARB pglGetCompressedTexImageARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate UInt32 glGetDebugMessageLogARB(UInt32 count, Int32 bufsize, [Out] int* sources, [Out] int* types, [Out] UInt32* ids, [Out] int* severities, [Out] Int32* lengths, [Out] StringBuilder messageLog);
			[ThreadStatic]
			internal static glGetDebugMessageLogARB pglGetDebugMessageLogARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetGraphicsResetStatusARB();
			[ThreadStatic]
			internal static glGetGraphicsResetStatusARB pglGetGraphicsResetStatusARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate UInt32 glGetHandleARB(int pname);
			[ThreadStatic]
			internal static glGetHandleARB pglGetHandleARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetInfoLogARB(UInt32 obj, Int32 maxLength, [Out] Int32* length, [Out] StringBuilder infoLog);
			[ThreadStatic]
			internal static glGetInfoLogARB pglGetInfoLogARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedStringARB(int namelen, string name, Int32 bufSize, [Out] int* stringlen, [Out] StringBuilder @string);
			[ThreadStatic]
			internal static glGetNamedStringARB pglGetNamedStringARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetNamedStringivARB(int namelen, string name, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetNamedStringivARB pglGetNamedStringivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetnColorTableARB(int target, int format, int type, Int32 bufSize, [Out] IntPtr table);
			[ThreadStatic]
			internal static glGetnColorTableARB pglGetnColorTableARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetnCompressedTexImageARB(int target, int lod, Int32 bufSize, [Out] IntPtr img);
			[ThreadStatic]
			internal static glGetnCompressedTexImageARB pglGetnCompressedTexImageARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetnConvolutionFilterARB(int target, int format, int type, Int32 bufSize, [Out] IntPtr image);
			[ThreadStatic]
			internal static glGetnConvolutionFilterARB pglGetnConvolutionFilterARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetnHistogramARB(int target, bool reset, int format, int type, Int32 bufSize, [Out] IntPtr values);
			[ThreadStatic]
			internal static glGetnHistogramARB pglGetnHistogramARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnMapdvARB(int target, int query, Int32 bufSize, [Out] double* v);
			[ThreadStatic]
			internal static glGetnMapdvARB pglGetnMapdvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnMapfvARB(int target, int query, Int32 bufSize, [Out] float* v);
			[ThreadStatic]
			internal static glGetnMapfvARB pglGetnMapfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnMapivARB(int target, int query, Int32 bufSize, [Out] int* v);
			[ThreadStatic]
			internal static glGetnMapivARB pglGetnMapivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetnMinmaxARB(int target, bool reset, int format, int type, Int32 bufSize, [Out] IntPtr values);
			[ThreadStatic]
			internal static glGetnMinmaxARB pglGetnMinmaxARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnPixelMapfvARB(int map, Int32 bufSize, [Out] float* values);
			[ThreadStatic]
			internal static glGetnPixelMapfvARB pglGetnPixelMapfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnPixelMapuivARB(int map, Int32 bufSize, [Out] UInt32* values);
			[ThreadStatic]
			internal static glGetnPixelMapuivARB pglGetnPixelMapuivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnPixelMapusvARB(int map, Int32 bufSize, [Out] UInt16* values);
			[ThreadStatic]
			internal static glGetnPixelMapusvARB pglGetnPixelMapusvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnPolygonStippleARB(Int32 bufSize, [Out] byte* pattern);
			[ThreadStatic]
			internal static glGetnPolygonStippleARB pglGetnPolygonStippleARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetnSeparableFilterARB(int target, int format, int type, Int32 rowBufSize, [Out] IntPtr row, Int32 columnBufSize, [Out] IntPtr column, [Out] IntPtr span);
			[ThreadStatic]
			internal static glGetnSeparableFilterARB pglGetnSeparableFilterARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetnTexImageARB(int target, int level, int format, int type, Int32 bufSize, [Out] IntPtr img);
			[ThreadStatic]
			internal static glGetnTexImageARB pglGetnTexImageARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnUniformdvARB(UInt32 program, int location, Int32 bufSize, [Out] double* @params);
			[ThreadStatic]
			internal static glGetnUniformdvARB pglGetnUniformdvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnUniformfvARB(UInt32 program, int location, Int32 bufSize, [Out] float* @params);
			[ThreadStatic]
			internal static glGetnUniformfvARB pglGetnUniformfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnUniformivARB(UInt32 program, int location, Int32 bufSize, [Out] int* @params);
			[ThreadStatic]
			internal static glGetnUniformivARB pglGetnUniformivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetnUniformuivARB(UInt32 program, int location, Int32 bufSize, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetnUniformuivARB pglGetnUniformuivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetObjectParameterfvARB(UInt32 obj, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetObjectParameterfvARB pglGetObjectParameterfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetObjectParameterivARB(UInt32 obj, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetObjectParameterivARB pglGetObjectParameterivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramEnvParameterdvARB(int target, UInt32 index, [Out] double* @params);
			[ThreadStatic]
			internal static glGetProgramEnvParameterdvARB pglGetProgramEnvParameterdvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramEnvParameterfvARB(int target, UInt32 index, [Out] float* @params);
			[ThreadStatic]
			internal static glGetProgramEnvParameterfvARB pglGetProgramEnvParameterfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramivARB(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetProgramivARB pglGetProgramivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramLocalParameterdvARB(int target, UInt32 index, [Out] double* @params);
			[ThreadStatic]
			internal static glGetProgramLocalParameterdvARB pglGetProgramLocalParameterdvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetProgramLocalParameterfvARB(int target, UInt32 index, [Out] float* @params);
			[ThreadStatic]
			internal static glGetProgramLocalParameterfvARB pglGetProgramLocalParameterfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glGetProgramStringARB(int target, int pname, [Out] IntPtr @string);
			[ThreadStatic]
			internal static glGetProgramStringARB pglGetProgramStringARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryivARB(int target, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetQueryivARB pglGetQueryivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjectivARB(UInt32 id, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetQueryObjectivARB pglGetQueryObjectivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetQueryObjectuivARB(UInt32 id, int pname, [Out] UInt32* @params);
			[ThreadStatic]
			internal static glGetQueryObjectuivARB pglGetQueryObjectuivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetShaderSourceARB(UInt32 obj, Int32 maxLength, [Out] Int32* length, [Out] StringBuilder source);
			[ThreadStatic]
			internal static glGetShaderSourceARB pglGetShaderSourceARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformfvARB(UInt32 programObj, int location, [Out] float* @params);
			[ThreadStatic]
			internal static glGetUniformfvARB pglGetUniformfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetUniformivARB(UInt32 programObj, int location, [Out] int* @params);
			[ThreadStatic]
			internal static glGetUniformivARB pglGetUniformivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate int glGetUniformLocationARB(UInt32 programObj, string name);
			[ThreadStatic]
			internal static glGetUniformLocationARB pglGetUniformLocationARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribdvARB(UInt32 index, int pname, [Out] double* @params);
			[ThreadStatic]
			internal static glGetVertexAttribdvARB pglGetVertexAttribdvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribfvARB(UInt32 index, int pname, [Out] float* @params);
			[ThreadStatic]
			internal static glGetVertexAttribfvARB pglGetVertexAttribfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribivARB(UInt32 index, int pname, [Out] int* @params);
			[ThreadStatic]
			internal static glGetVertexAttribivARB pglGetVertexAttribivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glGetVertexAttribPointervARB(UInt32 index, int pname, [Out] IntPtr* pointer);
			[ThreadStatic]
			internal static glGetVertexAttribPointervARB pglGetVertexAttribPointervARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsBufferARB(UInt32 buffer);
			[ThreadStatic]
			internal static glIsBufferARB pglIsBufferARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsNamedStringARB(int namelen, string name);
			[ThreadStatic]
			internal static glIsNamedStringARB pglIsNamedStringARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsProgramARB(UInt32 program);
			[ThreadStatic]
			internal static glIsProgramARB pglIsProgramARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glIsQueryARB(UInt32 id);
			[ThreadStatic]
			internal static glIsQueryARB pglIsQueryARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glLinkProgramARB(UInt32 programObj);
			[ThreadStatic]
			internal static glLinkProgramARB pglLinkProgramARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLoadTransposeMatrixdARB(double* m);
			[ThreadStatic]
			internal static glLoadTransposeMatrixdARB pglLoadTransposeMatrixdARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glLoadTransposeMatrixfARB(float* m);
			[ThreadStatic]
			internal static glLoadTransposeMatrixfARB pglLoadTransposeMatrixfARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate IntPtr glMapBufferARB(int target, int access);
			[ThreadStatic]
			internal static glMapBufferARB pglMapBufferARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMatrixIndexPointerARB(int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glMatrixIndexPointerARB pglMatrixIndexPointerARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixIndexubvARB(int size, byte* indices);
			[ThreadStatic]
			internal static glMatrixIndexubvARB pglMatrixIndexubvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixIndexuivARB(int size, UInt32* indices);
			[ThreadStatic]
			internal static glMatrixIndexuivARB pglMatrixIndexuivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMatrixIndexusvARB(int size, UInt16* indices);
			[ThreadStatic]
			internal static glMatrixIndexusvARB pglMatrixIndexusvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMinSampleShadingARB(float value);
			[ThreadStatic]
			internal static glMinSampleShadingARB pglMinSampleShadingARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1dARB(int target, double s);
			[ThreadStatic]
			internal static glMultiTexCoord1dARB pglMultiTexCoord1dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1dvARB(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord1dvARB pglMultiTexCoord1dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1fARB(int target, float s);
			[ThreadStatic]
			internal static glMultiTexCoord1fARB pglMultiTexCoord1fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1fvARB(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord1fvARB pglMultiTexCoord1fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1iARB(int target, int s);
			[ThreadStatic]
			internal static glMultiTexCoord1iARB pglMultiTexCoord1iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1ivARB(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord1ivARB pglMultiTexCoord1ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord1sARB(int target, Int16 s);
			[ThreadStatic]
			internal static glMultiTexCoord1sARB pglMultiTexCoord1sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord1svARB(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord1svARB pglMultiTexCoord1svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2dARB(int target, double s, double t);
			[ThreadStatic]
			internal static glMultiTexCoord2dARB pglMultiTexCoord2dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2dvARB(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord2dvARB pglMultiTexCoord2dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2fARB(int target, float s, float t);
			[ThreadStatic]
			internal static glMultiTexCoord2fARB pglMultiTexCoord2fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2fvARB(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord2fvARB pglMultiTexCoord2fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2iARB(int target, int s, int t);
			[ThreadStatic]
			internal static glMultiTexCoord2iARB pglMultiTexCoord2iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2ivARB(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord2ivARB pglMultiTexCoord2ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord2sARB(int target, Int16 s, Int16 t);
			[ThreadStatic]
			internal static glMultiTexCoord2sARB pglMultiTexCoord2sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord2svARB(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord2svARB pglMultiTexCoord2svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3dARB(int target, double s, double t, double r);
			[ThreadStatic]
			internal static glMultiTexCoord3dARB pglMultiTexCoord3dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3dvARB(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord3dvARB pglMultiTexCoord3dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3fARB(int target, float s, float t, float r);
			[ThreadStatic]
			internal static glMultiTexCoord3fARB pglMultiTexCoord3fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3fvARB(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord3fvARB pglMultiTexCoord3fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3iARB(int target, int s, int t, int r);
			[ThreadStatic]
			internal static glMultiTexCoord3iARB pglMultiTexCoord3iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3ivARB(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord3ivARB pglMultiTexCoord3ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord3sARB(int target, Int16 s, Int16 t, Int16 r);
			[ThreadStatic]
			internal static glMultiTexCoord3sARB pglMultiTexCoord3sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord3svARB(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord3svARB pglMultiTexCoord3svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4dARB(int target, double s, double t, double r, double q);
			[ThreadStatic]
			internal static glMultiTexCoord4dARB pglMultiTexCoord4dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4dvARB(int target, double* v);
			[ThreadStatic]
			internal static glMultiTexCoord4dvARB pglMultiTexCoord4dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4fARB(int target, float s, float t, float r, float q);
			[ThreadStatic]
			internal static glMultiTexCoord4fARB pglMultiTexCoord4fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4fvARB(int target, float* v);
			[ThreadStatic]
			internal static glMultiTexCoord4fvARB pglMultiTexCoord4fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4iARB(int target, int s, int t, int r, int q);
			[ThreadStatic]
			internal static glMultiTexCoord4iARB pglMultiTexCoord4iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4ivARB(int target, int* v);
			[ThreadStatic]
			internal static glMultiTexCoord4ivARB pglMultiTexCoord4ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glMultiTexCoord4sARB(int target, Int16 s, Int16 t, Int16 r, Int16 q);
			[ThreadStatic]
			internal static glMultiTexCoord4sARB pglMultiTexCoord4sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultiTexCoord4svARB(int target, Int16* v);
			[ThreadStatic]
			internal static glMultiTexCoord4svARB pglMultiTexCoord4svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultTransposeMatrixdARB(double* m);
			[ThreadStatic]
			internal static glMultTransposeMatrixdARB pglMultTransposeMatrixdARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glMultTransposeMatrixfARB(float* m);
			[ThreadStatic]
			internal static glMultTransposeMatrixfARB pglMultTransposeMatrixfARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glNamedStringARB(int type, int namelen, string name, int stringlen, string @string);
			[ThreadStatic]
			internal static glNamedStringARB pglNamedStringARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glPointParameterfARB(int pname, float param);
			[ThreadStatic]
			internal static glPointParameterfARB pglPointParameterfARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glPointParameterfvARB(int pname, float* @params);
			[ThreadStatic]
			internal static glPointParameterfvARB pglPointParameterfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramEnvParameter4dARB(int target, UInt32 index, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glProgramEnvParameter4dARB pglProgramEnvParameter4dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramEnvParameter4dvARB(int target, UInt32 index, double* @params);
			[ThreadStatic]
			internal static glProgramEnvParameter4dvARB pglProgramEnvParameter4dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramEnvParameter4fARB(int target, UInt32 index, float x, float y, float z, float w);
			[ThreadStatic]
			internal static glProgramEnvParameter4fARB pglProgramEnvParameter4fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramEnvParameter4fvARB(int target, UInt32 index, float* @params);
			[ThreadStatic]
			internal static glProgramEnvParameter4fvARB pglProgramEnvParameter4fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramLocalParameter4dARB(int target, UInt32 index, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glProgramLocalParameter4dARB pglProgramLocalParameter4dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramLocalParameter4dvARB(int target, UInt32 index, double* @params);
			[ThreadStatic]
			internal static glProgramLocalParameter4dvARB pglProgramLocalParameter4dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramLocalParameter4fARB(int target, UInt32 index, float x, float y, float z, float w);
			[ThreadStatic]
			internal static glProgramLocalParameter4fARB pglProgramLocalParameter4fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glProgramLocalParameter4fvARB(int target, UInt32 index, float* @params);
			[ThreadStatic]
			internal static glProgramLocalParameter4fvARB pglProgramLocalParameter4fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramParameteriARB(UInt32 program, int pname, int value);
			[ThreadStatic]
			internal static glProgramParameteriARB pglProgramParameteriARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glProgramStringARB(int target, int format, Int32 len, IntPtr @string);
			[ThreadStatic]
			internal static glProgramStringARB pglProgramStringARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glReadnPixelsARB(int x, int y, Int32 width, Int32 height, int format, int type, Int32 bufSize, [Out] IntPtr data);
			[ThreadStatic]
			internal static glReadnPixelsARB pglReadnPixelsARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glSampleCoverageARB(float value, bool invert);
			[ThreadStatic]
			internal static glSampleCoverageARB pglSampleCoverageARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glShaderSourceARB(UInt32 shaderObj, Int32 count, string[] @string, int* length);
			[ThreadStatic]
			internal static glShaderSourceARB pglShaderSourceARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glTexBufferARB(int target, int internalformat, UInt32 buffer);
			[ThreadStatic]
			internal static glTexBufferARB pglTexBufferARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform1fARB(int location, float v0);
			[ThreadStatic]
			internal static glUniform1fARB pglUniform1fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform1fvARB(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform1fvARB pglUniform1fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform1iARB(int location, int v0);
			[ThreadStatic]
			internal static glUniform1iARB pglUniform1iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform1ivARB(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform1ivARB pglUniform1ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform2fARB(int location, float v0, float v1);
			[ThreadStatic]
			internal static glUniform2fARB pglUniform2fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform2fvARB(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform2fvARB pglUniform2fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform2iARB(int location, int v0, int v1);
			[ThreadStatic]
			internal static glUniform2iARB pglUniform2iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform2ivARB(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform2ivARB pglUniform2ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform3fARB(int location, float v0, float v1, float v2);
			[ThreadStatic]
			internal static glUniform3fARB pglUniform3fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform3fvARB(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform3fvARB pglUniform3fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform3iARB(int location, int v0, int v1, int v2);
			[ThreadStatic]
			internal static glUniform3iARB pglUniform3iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform3ivARB(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform3ivARB pglUniform3ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform4fARB(int location, float v0, float v1, float v2, float v3);
			[ThreadStatic]
			internal static glUniform4fARB pglUniform4fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform4fvARB(int location, Int32 count, float* value);
			[ThreadStatic]
			internal static glUniform4fvARB pglUniform4fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUniform4iARB(int location, int v0, int v1, int v2, int v3);
			[ThreadStatic]
			internal static glUniform4iARB pglUniform4iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniform4ivARB(int location, Int32 count, int* value);
			[ThreadStatic]
			internal static glUniform4ivARB pglUniform4ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix2fvARB(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix2fvARB pglUniformMatrix2fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix3fvARB(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix3fvARB pglUniformMatrix3fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glUniformMatrix4fvARB(int location, Int32 count, bool transpose, float* value);
			[ThreadStatic]
			internal static glUniformMatrix4fvARB pglUniformMatrix4fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate bool glUnmapBufferARB(int target);
			[ThreadStatic]
			internal static glUnmapBufferARB pglUnmapBufferARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glUseProgramObjectARB(UInt32 programObj);
			[ThreadStatic]
			internal static glUseProgramObjectARB pglUseProgramObjectARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glValidateProgramARB(UInt32 programObj);
			[ThreadStatic]
			internal static glValidateProgramARB pglValidateProgramARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib1dARB(UInt32 index, double x);
			[ThreadStatic]
			internal static glVertexAttrib1dARB pglVertexAttrib1dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib1dvARB(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib1dvARB pglVertexAttrib1dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib1fARB(UInt32 index, float x);
			[ThreadStatic]
			internal static glVertexAttrib1fARB pglVertexAttrib1fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib1fvARB(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib1fvARB pglVertexAttrib1fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib1sARB(UInt32 index, Int16 x);
			[ThreadStatic]
			internal static glVertexAttrib1sARB pglVertexAttrib1sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib1svARB(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib1svARB pglVertexAttrib1svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib2dARB(UInt32 index, double x, double y);
			[ThreadStatic]
			internal static glVertexAttrib2dARB pglVertexAttrib2dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib2dvARB(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib2dvARB pglVertexAttrib2dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib2fARB(UInt32 index, float x, float y);
			[ThreadStatic]
			internal static glVertexAttrib2fARB pglVertexAttrib2fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib2fvARB(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib2fvARB pglVertexAttrib2fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib2sARB(UInt32 index, Int16 x, Int16 y);
			[ThreadStatic]
			internal static glVertexAttrib2sARB pglVertexAttrib2sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib2svARB(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib2svARB pglVertexAttrib2svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib3dARB(UInt32 index, double x, double y, double z);
			[ThreadStatic]
			internal static glVertexAttrib3dARB pglVertexAttrib3dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib3dvARB(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib3dvARB pglVertexAttrib3dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib3fARB(UInt32 index, float x, float y, float z);
			[ThreadStatic]
			internal static glVertexAttrib3fARB pglVertexAttrib3fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib3fvARB(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib3fvARB pglVertexAttrib3fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib3sARB(UInt32 index, Int16 x, Int16 y, Int16 z);
			[ThreadStatic]
			internal static glVertexAttrib3sARB pglVertexAttrib3sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib3svARB(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib3svARB pglVertexAttrib3svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4bvARB(UInt32 index, sbyte* v);
			[ThreadStatic]
			internal static glVertexAttrib4bvARB pglVertexAttrib4bvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4dARB(UInt32 index, double x, double y, double z, double w);
			[ThreadStatic]
			internal static glVertexAttrib4dARB pglVertexAttrib4dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4dvARB(UInt32 index, double* v);
			[ThreadStatic]
			internal static glVertexAttrib4dvARB pglVertexAttrib4dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4fARB(UInt32 index, float x, float y, float z, float w);
			[ThreadStatic]
			internal static glVertexAttrib4fARB pglVertexAttrib4fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4fvARB(UInt32 index, float* v);
			[ThreadStatic]
			internal static glVertexAttrib4fvARB pglVertexAttrib4fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4ivARB(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttrib4ivARB pglVertexAttrib4ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4NbvARB(UInt32 index, sbyte* v);
			[ThreadStatic]
			internal static glVertexAttrib4NbvARB pglVertexAttrib4NbvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4NivARB(UInt32 index, int* v);
			[ThreadStatic]
			internal static glVertexAttrib4NivARB pglVertexAttrib4NivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4NsvARB(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib4NsvARB pglVertexAttrib4NsvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4NubARB(UInt32 index, byte x, byte y, byte z, byte w);
			[ThreadStatic]
			internal static glVertexAttrib4NubARB pglVertexAttrib4NubARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4NubvARB(UInt32 index, byte* v);
			[ThreadStatic]
			internal static glVertexAttrib4NubvARB pglVertexAttrib4NubvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4NuivARB(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttrib4NuivARB pglVertexAttrib4NuivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4NusvARB(UInt32 index, UInt16* v);
			[ThreadStatic]
			internal static glVertexAttrib4NusvARB pglVertexAttrib4NusvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttrib4sARB(UInt32 index, Int16 x, Int16 y, Int16 z, Int16 w);
			[ThreadStatic]
			internal static glVertexAttrib4sARB pglVertexAttrib4sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4svARB(UInt32 index, Int16* v);
			[ThreadStatic]
			internal static glVertexAttrib4svARB pglVertexAttrib4svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4ubvARB(UInt32 index, byte* v);
			[ThreadStatic]
			internal static glVertexAttrib4ubvARB pglVertexAttrib4ubvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4uivARB(UInt32 index, UInt32* v);
			[ThreadStatic]
			internal static glVertexAttrib4uivARB pglVertexAttrib4uivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glVertexAttrib4usvARB(UInt32 index, UInt16* v);
			[ThreadStatic]
			internal static glVertexAttrib4usvARB pglVertexAttrib4usvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribDivisorARB(UInt32 index, UInt32 divisor);
			[ThreadStatic]
			internal static glVertexAttribDivisorARB pglVertexAttribDivisorARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexAttribPointerARB(UInt32 index, int size, int type, bool normalized, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glVertexAttribPointerARB pglVertexAttribPointerARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glVertexBlendARB(int count);
			[ThreadStatic]
			internal static glVertexBlendARB pglVertexBlendARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightbvARB(int size, sbyte* weights);
			[ThreadStatic]
			internal static glWeightbvARB pglWeightbvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightdvARB(int size, double* weights);
			[ThreadStatic]
			internal static glWeightdvARB pglWeightdvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightfvARB(int size, float* weights);
			[ThreadStatic]
			internal static glWeightfvARB pglWeightfvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightivARB(int size, int* weights);
			[ThreadStatic]
			internal static glWeightivARB pglWeightivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWeightPointerARB(int size, int type, Int32 stride, IntPtr pointer);
			[ThreadStatic]
			internal static glWeightPointerARB pglWeightPointerARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightsvARB(int size, Int16* weights);
			[ThreadStatic]
			internal static glWeightsvARB pglWeightsvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightubvARB(int size, byte* weights);
			[ThreadStatic]
			internal static glWeightubvARB pglWeightubvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightuivARB(int size, UInt32* weights);
			[ThreadStatic]
			internal static glWeightuivARB pglWeightuivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWeightusvARB(int size, UInt16* weights);
			[ThreadStatic]
			internal static glWeightusvARB pglWeightusvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2dARB(double x, double y);
			[ThreadStatic]
			internal static glWindowPos2dARB pglWindowPos2dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2dvARB(double* v);
			[ThreadStatic]
			internal static glWindowPos2dvARB pglWindowPos2dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2fARB(float x, float y);
			[ThreadStatic]
			internal static glWindowPos2fARB pglWindowPos2fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2fvARB(float* v);
			[ThreadStatic]
			internal static glWindowPos2fvARB pglWindowPos2fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2iARB(int x, int y);
			[ThreadStatic]
			internal static glWindowPos2iARB pglWindowPos2iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2ivARB(int* v);
			[ThreadStatic]
			internal static glWindowPos2ivARB pglWindowPos2ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos2sARB(Int16 x, Int16 y);
			[ThreadStatic]
			internal static glWindowPos2sARB pglWindowPos2sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos2svARB(Int16* v);
			[ThreadStatic]
			internal static glWindowPos2svARB pglWindowPos2svARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3dARB(double x, double y, double z);
			[ThreadStatic]
			internal static glWindowPos3dARB pglWindowPos3dARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3dvARB(double* v);
			[ThreadStatic]
			internal static glWindowPos3dvARB pglWindowPos3dvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3fARB(float x, float y, float z);
			[ThreadStatic]
			internal static glWindowPos3fARB pglWindowPos3fARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3fvARB(float* v);
			[ThreadStatic]
			internal static glWindowPos3fvARB pglWindowPos3fvARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3iARB(int x, int y, int z);
			[ThreadStatic]
			internal static glWindowPos3iARB pglWindowPos3iARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3ivARB(int* v);
			[ThreadStatic]
			internal static glWindowPos3ivARB pglWindowPos3ivARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal delegate void glWindowPos3sARB(Int16 x, Int16 y, Int16 z);
			[ThreadStatic]
			internal static glWindowPos3sARB pglWindowPos3sARB = null;

			[System.Security.SuppressUnmanagedCodeSecurity()]
			internal unsafe delegate void glWindowPos3svARB(Int16* v);
			[ThreadStatic]
			internal static glWindowPos3svARB pglWindowPos3svARB = null;

		}

		internal static partial class Imports
		{
			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glActiveTextureARB", ExactSpelling = true)]
			internal extern static void glActiveTextureARB(int texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glAttachObjectARB", ExactSpelling = true)]
			internal extern static void glAttachObjectARB(UInt32 containerObj, UInt32 obj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBeginQueryARB", ExactSpelling = true)]
			internal extern static void glBeginQueryARB(int target, UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindAttribLocationARB", ExactSpelling = true)]
			internal extern static void glBindAttribLocationARB(UInt32 programObj, UInt32 index, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindBufferARB", ExactSpelling = true)]
			internal extern static void glBindBufferARB(int target, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBindProgramARB", ExactSpelling = true)]
			internal extern static void glBindProgramARB(int target, UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquationiARB", ExactSpelling = true)]
			internal extern static void glBlendEquationiARB(UInt32 buf, int mode);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendEquationSeparateiARB", ExactSpelling = true)]
			internal extern static void glBlendEquationSeparateiARB(UInt32 buf, int modeRGB, int modeAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendFunciARB", ExactSpelling = true)]
			internal extern static void glBlendFunciARB(UInt32 buf, int src, int dst);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBlendFuncSeparateiARB", ExactSpelling = true)]
			internal extern static void glBlendFuncSeparateiARB(UInt32 buf, int srcRGB, int dstRGB, int srcAlpha, int dstAlpha);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBufferDataARB", ExactSpelling = true)]
			internal extern static void glBufferDataARB(int target, IntPtr size, IntPtr data, int usage);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glBufferSubDataARB", ExactSpelling = true)]
			internal extern static void glBufferSubDataARB(int target, IntPtr offset, IntPtr size, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClampColorARB", ExactSpelling = true)]
			internal extern static void glClampColorARB(int target, int clamp);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glClientActiveTextureARB", ExactSpelling = true)]
			internal extern static void glClientActiveTextureARB(int texture);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompileShaderARB", ExactSpelling = true)]
			internal extern static void glCompileShaderARB(UInt32 shaderObj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompileShaderIncludeARB", ExactSpelling = true)]
			internal extern static unsafe void glCompileShaderIncludeARB(UInt32 shader, Int32 count, string[] path, int* length);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexImage1DARB", ExactSpelling = true)]
			internal extern static void glCompressedTexImage1DARB(int target, int level, int internalformat, Int32 width, int border, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexImage2DARB", ExactSpelling = true)]
			internal extern static void glCompressedTexImage2DARB(int target, int level, int internalformat, Int32 width, Int32 height, int border, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexImage3DARB", ExactSpelling = true)]
			internal extern static void glCompressedTexImage3DARB(int target, int level, int internalformat, Int32 width, Int32 height, Int32 depth, int border, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexSubImage1DARB", ExactSpelling = true)]
			internal extern static void glCompressedTexSubImage1DARB(int target, int level, int xoffset, Int32 width, int format, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexSubImage2DARB", ExactSpelling = true)]
			internal extern static void glCompressedTexSubImage2DARB(int target, int level, int xoffset, int yoffset, Int32 width, Int32 height, int format, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCompressedTexSubImage3DARB", ExactSpelling = true)]
			internal extern static void glCompressedTexSubImage3DARB(int target, int level, int xoffset, int yoffset, int zoffset, Int32 width, Int32 height, Int32 depth, int format, Int32 imageSize, IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCreateProgramObjectARB", ExactSpelling = true)]
			internal extern static UInt32 glCreateProgramObjectARB();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCreateShaderObjectARB", ExactSpelling = true)]
			internal extern static UInt32 glCreateShaderObjectARB(int shaderType);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCreateSyncFromCLeventARB", ExactSpelling = true)]
			internal extern static int glCreateSyncFromCLeventARB(IntPtr context, IntPtr @event, uint flags);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glCurrentPaletteMatrixARB", ExactSpelling = true)]
			internal extern static void glCurrentPaletteMatrixARB(int index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDebugMessageCallbackARB", ExactSpelling = true)]
			internal extern static void glDebugMessageCallbackARB(IntPtr callback, IntPtr userParam);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDebugMessageControlARB", ExactSpelling = true)]
			internal extern static unsafe void glDebugMessageControlARB(int source, int type, int severity, Int32 count, UInt32* ids, bool enabled);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDebugMessageInsertARB", ExactSpelling = true)]
			internal extern static void glDebugMessageInsertARB(int source, int type, UInt32 id, int severity, Int32 length, string buf);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteBuffersARB", ExactSpelling = true)]
			internal extern static unsafe void glDeleteBuffersARB(Int32 n, UInt32* buffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteNamedStringARB", ExactSpelling = true)]
			internal extern static void glDeleteNamedStringARB(int namelen, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteObjectARB", ExactSpelling = true)]
			internal extern static void glDeleteObjectARB(UInt32 obj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteProgramsARB", ExactSpelling = true)]
			internal extern static unsafe void glDeleteProgramsARB(Int32 n, UInt32* programs);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDeleteQueriesARB", ExactSpelling = true)]
			internal extern static unsafe void glDeleteQueriesARB(Int32 n, UInt32* ids);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDetachObjectARB", ExactSpelling = true)]
			internal extern static void glDetachObjectARB(UInt32 containerObj, UInt32 attachedObj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDisableVertexAttribArrayARB", ExactSpelling = true)]
			internal extern static void glDisableVertexAttribArrayARB(UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawArraysInstancedARB", ExactSpelling = true)]
			internal extern static void glDrawArraysInstancedARB(int mode, int first, Int32 count, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawBuffersARB", ExactSpelling = true)]
			internal extern static unsafe void glDrawBuffersARB(Int32 n, int* bufs);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glDrawElementsInstancedARB", ExactSpelling = true)]
			internal extern static void glDrawElementsInstancedARB(int mode, Int32 count, int type, IntPtr indices, Int32 primcount);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEnableVertexAttribArrayARB", ExactSpelling = true)]
			internal extern static void glEnableVertexAttribArrayARB(UInt32 index);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glEndQueryARB", ExactSpelling = true)]
			internal extern static void glEndQueryARB(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTextureARB", ExactSpelling = true)]
			internal extern static void glFramebufferTextureARB(int target, int attachment, UInt32 texture, int level);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTextureFaceARB", ExactSpelling = true)]
			internal extern static void glFramebufferTextureFaceARB(int target, int attachment, UInt32 texture, int level, int face);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glFramebufferTextureLayerARB", ExactSpelling = true)]
			internal extern static void glFramebufferTextureLayerARB(int target, int attachment, UInt32 texture, int level, int layer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenBuffersARB", ExactSpelling = true)]
			internal extern static unsafe void glGenBuffersARB(Int32 n, [Out]UInt32* buffers);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenProgramsARB", ExactSpelling = true)]
			internal extern static unsafe void glGenProgramsARB(Int32 n, [Out]UInt32* programs);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGenQueriesARB", ExactSpelling = true)]
			internal extern static unsafe void glGenQueriesARB(Int32 n, [Out]UInt32* ids);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveAttribARB", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveAttribARB(UInt32 programObj, UInt32 index, Int32 maxLength, [Out]Int32 length, [Out]int size, [Out]int type, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetActiveUniformARB", ExactSpelling = true)]
			internal extern static unsafe void glGetActiveUniformARB(UInt32 programObj, UInt32 index, Int32 maxLength, [Out]Int32 length, [Out]int size, [Out]int type, [Out]StringBuilder name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetAttachedObjectsARB", ExactSpelling = true)]
			internal extern static unsafe void glGetAttachedObjectsARB(UInt32 containerObj, Int32 maxCount, [Out]Int32 count, [Out]UInt32* obj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetAttribLocationARB", ExactSpelling = true)]
			internal extern static int glGetAttribLocationARB(UInt32 programObj, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBufferParameterivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetBufferParameterivARB(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBufferPointervARB", ExactSpelling = true)]
			internal extern static unsafe void glGetBufferPointervARB(int target, int pname, [Out]IntPtr @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetBufferSubDataARB", ExactSpelling = true)]
			internal extern static void glGetBufferSubDataARB(int target, IntPtr offset, IntPtr size, [Out]IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetCompressedTexImageARB", ExactSpelling = true)]
			internal extern static void glGetCompressedTexImageARB(int target, int level, [Out]IntPtr img);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetDebugMessageLogARB", ExactSpelling = true)]
			internal extern static unsafe UInt32 glGetDebugMessageLogARB(UInt32 count, Int32 bufsize, [Out]int* sources, [Out]int* types, [Out]UInt32* ids, [Out]int* severities, [Out]Int32* lengths, [Out]StringBuilder messageLog);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetGraphicsResetStatusARB", ExactSpelling = true)]
			internal extern static int glGetGraphicsResetStatusARB();

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetHandleARB", ExactSpelling = true)]
			internal extern static UInt32 glGetHandleARB(int pname);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetInfoLogARB", ExactSpelling = true)]
			internal extern static unsafe void glGetInfoLogARB(UInt32 obj, Int32 maxLength, [Out]Int32 length, [Out]StringBuilder infoLog);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedStringARB", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedStringARB(int namelen, string name, Int32 bufSize, [Out]int stringlen, [Out]StringBuilder @string);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetNamedStringivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetNamedStringivARB(int namelen, string name, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnColorTableARB", ExactSpelling = true)]
			internal extern static void glGetnColorTableARB(int target, int format, int type, Int32 bufSize, [Out]IntPtr table);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnCompressedTexImageARB", ExactSpelling = true)]
			internal extern static void glGetnCompressedTexImageARB(int target, int lod, Int32 bufSize, [Out]IntPtr img);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnConvolutionFilterARB", ExactSpelling = true)]
			internal extern static void glGetnConvolutionFilterARB(int target, int format, int type, Int32 bufSize, [Out]IntPtr image);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnHistogramARB", ExactSpelling = true)]
			internal extern static void glGetnHistogramARB(int target, bool reset, int format, int type, Int32 bufSize, [Out]IntPtr values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnMapdvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnMapdvARB(int target, int query, Int32 bufSize, [Out]double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnMapfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnMapfvARB(int target, int query, Int32 bufSize, [Out]float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnMapivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnMapivARB(int target, int query, Int32 bufSize, [Out]int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnMinmaxARB", ExactSpelling = true)]
			internal extern static void glGetnMinmaxARB(int target, bool reset, int format, int type, Int32 bufSize, [Out]IntPtr values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnPixelMapfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnPixelMapfvARB(int map, Int32 bufSize, [Out]float* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnPixelMapuivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnPixelMapuivARB(int map, Int32 bufSize, [Out]UInt32* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnPixelMapusvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnPixelMapusvARB(int map, Int32 bufSize, [Out]UInt16* values);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnPolygonStippleARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnPolygonStippleARB(Int32 bufSize, [Out]byte* pattern);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnSeparableFilterARB", ExactSpelling = true)]
			internal extern static void glGetnSeparableFilterARB(int target, int format, int type, Int32 rowBufSize, [Out]IntPtr row, Int32 columnBufSize, [Out]IntPtr column, [Out]IntPtr span);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnTexImageARB", ExactSpelling = true)]
			internal extern static void glGetnTexImageARB(int target, int level, int format, int type, Int32 bufSize, [Out]IntPtr img);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnUniformdvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnUniformdvARB(UInt32 program, int location, Int32 bufSize, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnUniformfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnUniformfvARB(UInt32 program, int location, Int32 bufSize, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnUniformivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnUniformivARB(UInt32 program, int location, Int32 bufSize, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetnUniformuivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetnUniformuivARB(UInt32 program, int location, Int32 bufSize, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetObjectParameterfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetObjectParameterfvARB(UInt32 obj, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetObjectParameterivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetObjectParameterivARB(UInt32 obj, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramEnvParameterdvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramEnvParameterdvARB(int target, UInt32 index, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramEnvParameterfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramEnvParameterfvARB(int target, UInt32 index, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramivARB(int target, int pname, [Out]int @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramLocalParameterdvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramLocalParameterdvARB(int target, UInt32 index, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramLocalParameterfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetProgramLocalParameterfvARB(int target, UInt32 index, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetProgramStringARB", ExactSpelling = true)]
			internal extern static void glGetProgramStringARB(int target, int pname, [Out]IntPtr @string);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryivARB(int target, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjectivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjectivARB(UInt32 id, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetQueryObjectuivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetQueryObjectuivARB(UInt32 id, int pname, [Out]UInt32* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetShaderSourceARB", ExactSpelling = true)]
			internal extern static unsafe void glGetShaderSourceARB(UInt32 obj, Int32 maxLength, [Out]Int32 length, [Out]StringBuilder source);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformfvARB(UInt32 programObj, int location, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetUniformivARB(UInt32 programObj, int location, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetUniformLocationARB", ExactSpelling = true)]
			internal extern static int glGetUniformLocationARB(UInt32 programObj, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribdvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribdvARB(UInt32 index, int pname, [Out]double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribfvARB", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribfvARB(UInt32 index, int pname, [Out]float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribivARB", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribivARB(UInt32 index, int pname, [Out]int* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glGetVertexAttribPointervARB", ExactSpelling = true)]
			internal extern static unsafe void glGetVertexAttribPointervARB(UInt32 index, int pname, [Out]IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsBufferARB", ExactSpelling = true)]
			internal extern static bool glIsBufferARB(UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsNamedStringARB", ExactSpelling = true)]
			internal extern static bool glIsNamedStringARB(int namelen, string name);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsProgramARB", ExactSpelling = true)]
			internal extern static bool glIsProgramARB(UInt32 program);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glIsQueryARB", ExactSpelling = true)]
			internal extern static bool glIsQueryARB(UInt32 id);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLinkProgramARB", ExactSpelling = true)]
			internal extern static void glLinkProgramARB(UInt32 programObj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadTransposeMatrixdARB", ExactSpelling = true)]
			internal extern static unsafe void glLoadTransposeMatrixdARB(double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glLoadTransposeMatrixfARB", ExactSpelling = true)]
			internal extern static unsafe void glLoadTransposeMatrixfARB(float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMapBufferARB", ExactSpelling = true)]
			internal extern static IntPtr glMapBufferARB(int target, int access);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixIndexPointerARB", ExactSpelling = true)]
			internal extern static void glMatrixIndexPointerARB(int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixIndexubvARB", ExactSpelling = true)]
			internal extern static unsafe void glMatrixIndexubvARB(int size, byte* indices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixIndexuivARB", ExactSpelling = true)]
			internal extern static unsafe void glMatrixIndexuivARB(int size, UInt32* indices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMatrixIndexusvARB", ExactSpelling = true)]
			internal extern static unsafe void glMatrixIndexusvARB(int size, UInt16* indices);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMinSampleShadingARB", ExactSpelling = true)]
			internal extern static void glMinSampleShadingARB(float value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1dARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1dARB(int target, double s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1dvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1dvARB(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1fARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1fARB(int target, float s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1fvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1fvARB(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1iARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1iARB(int target, int s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1ivARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1ivARB(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1sARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord1sARB(int target, Int16 s);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord1svARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord1svARB(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2dARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2dARB(int target, double s, double t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2dvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2dvARB(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2fARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2fARB(int target, float s, float t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2fvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2fvARB(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2iARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2iARB(int target, int s, int t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2ivARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2ivARB(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2sARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord2sARB(int target, Int16 s, Int16 t);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord2svARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord2svARB(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3dARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3dARB(int target, double s, double t, double r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3dvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3dvARB(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3fARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3fARB(int target, float s, float t, float r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3fvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3fvARB(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3iARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3iARB(int target, int s, int t, int r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3ivARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3ivARB(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3sARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord3sARB(int target, Int16 s, Int16 t, Int16 r);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord3svARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord3svARB(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4dARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4dARB(int target, double s, double t, double r, double q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4dvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4dvARB(int target, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4fARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4fARB(int target, float s, float t, float r, float q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4fvARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4fvARB(int target, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4iARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4iARB(int target, int s, int t, int r, int q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4ivARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4ivARB(int target, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4sARB", ExactSpelling = true)]
			internal extern static void glMultiTexCoord4sARB(int target, Int16 s, Int16 t, Int16 r, Int16 q);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultiTexCoord4svARB", ExactSpelling = true)]
			internal extern static unsafe void glMultiTexCoord4svARB(int target, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultTransposeMatrixdARB", ExactSpelling = true)]
			internal extern static unsafe void glMultTransposeMatrixdARB(double* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glMultTransposeMatrixfARB", ExactSpelling = true)]
			internal extern static unsafe void glMultTransposeMatrixfARB(float* m);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glNamedStringARB", ExactSpelling = true)]
			internal extern static void glNamedStringARB(int type, int namelen, string name, int stringlen, string @string);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameterfARB", ExactSpelling = true)]
			internal extern static void glPointParameterfARB(int pname, float param);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glPointParameterfvARB", ExactSpelling = true)]
			internal extern static unsafe void glPointParameterfvARB(int pname, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramEnvParameter4dARB", ExactSpelling = true)]
			internal extern static void glProgramEnvParameter4dARB(int target, UInt32 index, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramEnvParameter4dvARB", ExactSpelling = true)]
			internal extern static unsafe void glProgramEnvParameter4dvARB(int target, UInt32 index, double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramEnvParameter4fARB", ExactSpelling = true)]
			internal extern static void glProgramEnvParameter4fARB(int target, UInt32 index, float x, float y, float z, float w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramEnvParameter4fvARB", ExactSpelling = true)]
			internal extern static unsafe void glProgramEnvParameter4fvARB(int target, UInt32 index, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramLocalParameter4dARB", ExactSpelling = true)]
			internal extern static void glProgramLocalParameter4dARB(int target, UInt32 index, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramLocalParameter4dvARB", ExactSpelling = true)]
			internal extern static unsafe void glProgramLocalParameter4dvARB(int target, UInt32 index, double* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramLocalParameter4fARB", ExactSpelling = true)]
			internal extern static void glProgramLocalParameter4fARB(int target, UInt32 index, float x, float y, float z, float w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramLocalParameter4fvARB", ExactSpelling = true)]
			internal extern static unsafe void glProgramLocalParameter4fvARB(int target, UInt32 index, float* @params);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramParameteriARB", ExactSpelling = true)]
			internal extern static void glProgramParameteriARB(UInt32 program, int pname, int value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glProgramStringARB", ExactSpelling = true)]
			internal extern static void glProgramStringARB(int target, int format, Int32 len, IntPtr @string);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glReadnPixelsARB", ExactSpelling = true)]
			internal extern static void glReadnPixelsARB(int x, int y, Int32 width, Int32 height, int format, int type, Int32 bufSize, [Out]IntPtr data);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glSampleCoverageARB", ExactSpelling = true)]
			internal extern static void glSampleCoverageARB(float value, bool invert);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glShaderSourceARB", ExactSpelling = true)]
			internal extern static unsafe void glShaderSourceARB(UInt32 shaderObj, Int32 count, string[] @string, int* length);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glTexBufferARB", ExactSpelling = true)]
			internal extern static void glTexBufferARB(int target, int internalformat, UInt32 buffer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1fARB", ExactSpelling = true)]
			internal extern static void glUniform1fARB(int location, float v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1fvARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform1fvARB(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1iARB", ExactSpelling = true)]
			internal extern static void glUniform1iARB(int location, int v0);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform1ivARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform1ivARB(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2fARB", ExactSpelling = true)]
			internal extern static void glUniform2fARB(int location, float v0, float v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2fvARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform2fvARB(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2iARB", ExactSpelling = true)]
			internal extern static void glUniform2iARB(int location, int v0, int v1);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform2ivARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform2ivARB(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3fARB", ExactSpelling = true)]
			internal extern static void glUniform3fARB(int location, float v0, float v1, float v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3fvARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform3fvARB(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3iARB", ExactSpelling = true)]
			internal extern static void glUniform3iARB(int location, int v0, int v1, int v2);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform3ivARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform3ivARB(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4fARB", ExactSpelling = true)]
			internal extern static void glUniform4fARB(int location, float v0, float v1, float v2, float v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4fvARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform4fvARB(int location, Int32 count, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4iARB", ExactSpelling = true)]
			internal extern static void glUniform4iARB(int location, int v0, int v1, int v2, int v3);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniform4ivARB", ExactSpelling = true)]
			internal extern static unsafe void glUniform4ivARB(int location, Int32 count, int* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix2fvARB", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix2fvARB(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix3fvARB", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix3fvARB(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUniformMatrix4fvARB", ExactSpelling = true)]
			internal extern static unsafe void glUniformMatrix4fvARB(int location, Int32 count, bool transpose, float* value);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUnmapBufferARB", ExactSpelling = true)]
			internal extern static bool glUnmapBufferARB(int target);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glUseProgramObjectARB", ExactSpelling = true)]
			internal extern static void glUseProgramObjectARB(UInt32 programObj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glValidateProgramARB", ExactSpelling = true)]
			internal extern static void glValidateProgramARB(UInt32 programObj);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1dARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib1dARB(UInt32 index, double x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1dvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib1dvARB(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1fARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib1fARB(UInt32 index, float x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1fvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib1fvARB(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1sARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib1sARB(UInt32 index, Int16 x);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib1svARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib1svARB(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2dARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib2dARB(UInt32 index, double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2dvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib2dvARB(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2fARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib2fARB(UInt32 index, float x, float y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2fvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib2fvARB(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2sARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib2sARB(UInt32 index, Int16 x, Int16 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib2svARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib2svARB(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3dARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib3dARB(UInt32 index, double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3dvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib3dvARB(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3fARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib3fARB(UInt32 index, float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3fvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib3fvARB(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3sARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib3sARB(UInt32 index, Int16 x, Int16 y, Int16 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib3svARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib3svARB(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4bvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4bvARB(UInt32 index, sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4dARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib4dARB(UInt32 index, double x, double y, double z, double w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4dvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4dvARB(UInt32 index, double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4fARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib4fARB(UInt32 index, float x, float y, float z, float w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4fvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4fvARB(UInt32 index, float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4ivARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4ivARB(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4NbvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4NbvARB(UInt32 index, sbyte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4NivARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4NivARB(UInt32 index, int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4NsvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4NsvARB(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4NubARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib4NubARB(UInt32 index, byte x, byte y, byte z, byte w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4NubvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4NubvARB(UInt32 index, byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4NuivARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4NuivARB(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4NusvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4NusvARB(UInt32 index, UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4sARB", ExactSpelling = true)]
			internal extern static void glVertexAttrib4sARB(UInt32 index, Int16 x, Int16 y, Int16 z, Int16 w);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4svARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4svARB(UInt32 index, Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4ubvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4ubvARB(UInt32 index, byte* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4uivARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4uivARB(UInt32 index, UInt32* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttrib4usvARB", ExactSpelling = true)]
			internal extern static unsafe void glVertexAttrib4usvARB(UInt32 index, UInt16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribDivisorARB", ExactSpelling = true)]
			internal extern static void glVertexAttribDivisorARB(UInt32 index, UInt32 divisor);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexAttribPointerARB", ExactSpelling = true)]
			internal extern static void glVertexAttribPointerARB(UInt32 index, int size, int type, bool normalized, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glVertexBlendARB", ExactSpelling = true)]
			internal extern static void glVertexBlendARB(int count);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightbvARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightbvARB(int size, sbyte* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightdvARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightdvARB(int size, double* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightfvARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightfvARB(int size, float* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightivARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightivARB(int size, int* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightPointerARB", ExactSpelling = true)]
			internal extern static void glWeightPointerARB(int size, int type, Int32 stride, IntPtr pointer);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightsvARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightsvARB(int size, Int16* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightubvARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightubvARB(int size, byte* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightuivARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightuivARB(int size, UInt32* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWeightusvARB", ExactSpelling = true)]
			internal extern static unsafe void glWeightusvARB(int size, UInt16* weights);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2dARB", ExactSpelling = true)]
			internal extern static void glWindowPos2dARB(double x, double y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2dvARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2dvARB(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2fARB", ExactSpelling = true)]
			internal extern static void glWindowPos2fARB(float x, float y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2fvARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2fvARB(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2iARB", ExactSpelling = true)]
			internal extern static void glWindowPos2iARB(int x, int y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2ivARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2ivARB(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2sARB", ExactSpelling = true)]
			internal extern static void glWindowPos2sARB(Int16 x, Int16 y);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos2svARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos2svARB(Int16* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3dARB", ExactSpelling = true)]
			internal extern static void glWindowPos3dARB(double x, double y, double z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3dvARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3dvARB(double* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3fARB", ExactSpelling = true)]
			internal extern static void glWindowPos3fARB(float x, float y, float z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3fvARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3fvARB(float* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3iARB", ExactSpelling = true)]
			internal extern static void glWindowPos3iARB(int x, int y, int z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3ivARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3ivARB(int* v);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3sARB", ExactSpelling = true)]
			internal extern static void glWindowPos3sARB(Int16 x, Int16 y, Int16 z);

			[System.Security.SuppressUnmanagedCodeSecurity()]
			[System.Runtime.InteropServices.DllImport(Library, EntryPoint = "glWindowPos3svARB", ExactSpelling = true)]
			internal extern static unsafe void glWindowPos3svARB(Int16* v);

		}

	}
}
